<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.catglobe.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nguyenduyan</id>
	<title>Catglobe Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.catglobe.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nguyenduyan"/>
	<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/Special:Contributions/Nguyenduyan"/>
	<updated>2026-10-29T17:31:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Questionnaire_links&amp;diff=241148</id>
		<title>Questionnaire links</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Questionnaire_links&amp;diff=241148"/>
		<updated>2026-10-14T09:03:56Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;﻿ __TOC__&lt;br /&gt;
== Questionnaire links  ==&lt;br /&gt;
&lt;br /&gt;
Links to questionnaires can be created in a number of ways to support various actions upon users viewing their answer sheets. One type of link is recurring links where clicking the link will automatically generate a new answer sheet for that user. The basic part of the link can be found on the information dialog on the questionnaire list. By default the tag &#039;&amp;amp;amp;n=1&#039; will have been added. &lt;br /&gt;
&lt;br /&gt;
[[Image:3096.png|400px|Recurring link]] &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 965px; height: 164px;&amp;quot; cellspacing=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| r=[qasGUID]&amp;lt;br&amp;gt;&lt;br /&gt;
| Open directly an existing answer sheet&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| r=[qnaireGUID]&amp;lt;br&amp;gt;&lt;br /&gt;
| Use combine questionanire guid with below tags for open existing answer sheet or generate new answer sheet&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;amp;n=1&amp;lt;br&amp;gt;&lt;br /&gt;
| Will generate a new answer sheet each time the link is clicked. But it will check whether the user has a cookie telling Catglobe that this user should return to the initial answer sheet he created using the link and thus try to avoid that any one user uses the link more than once.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;amp;n=2&amp;lt;br&amp;gt;&lt;br /&gt;
| Similar to n=1 except that it will actually also generate a new user to attach to the answer sheet created. There may be various reasons why you would want to create user accounts when users use the link. You may for example have CGScript in your questionnaire that send information to update the user object with demographic data.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;amp;n=3&amp;lt;br&amp;gt;&lt;br /&gt;
| Will generate a new answer sheet for logged in user each time the link clicked (need to be logged in before)&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;amp;c=[accessCode]&amp;lt;br&amp;gt;&lt;br /&gt;
| Will open an existing answer sheet beloging to that access code&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;uac=1&amp;lt;br&amp;gt;&lt;br /&gt;
| Will open a page for typing accessCode and then will open existing answer sheet beloging to that access code. See more [[Code_protected_answer_sheets]]&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;amp;b=1&amp;lt;br&amp;gt;&lt;br /&gt;
| When this tag is added we will ignore that the logged in user has a session cookie which informs us that he has already started on a different answer sheet. We will instead just generate a new answer sheet to answer each time the user clicks the link!&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;amp;l=[language]&amp;lt;br&amp;gt;&lt;br /&gt;
| Where [language] should be replaced by the iso code of the language that the user should see the questionnaire in.E.g. &#039;l=da-DK&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;amp;u=[username]&amp;lt;br&amp;gt;&lt;br /&gt;
| If you did not choose &amp;amp;amp;n=1 or &amp;amp;amp;n=2 then you can instead specify user&#039;s user name and passwords as tags to let the system find an existing answer sheet for the questionnaire belonging to that user. Replace the [username] tag with the applicable user name. It must be used in combination with the correct password tag shown below. Can also be used for an n=3 link to login during the creation.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;amp;p=[password]&amp;lt;br&amp;gt;&lt;br /&gt;
| Replace the [password] tag with correct password for the user used in the [username] tag.&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Return values for CgScript functions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Qnaire Impersonation&lt;br /&gt;
!already logged in&lt;br /&gt;
!link type&lt;br /&gt;
![[User_getQasUser]]&lt;br /&gt;
![[User_getLoggedInUser]]&lt;br /&gt;
![[User getCallingLoggedInUser]]&lt;br /&gt;
![[getCurrentUserResourceId]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;10&amp;quot; |No&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |No&lt;br /&gt;
|Direct&lt;br /&gt;
|Qas user&lt;br /&gt;
|Qas user&lt;br /&gt;
|Empty&lt;br /&gt;
|Qas user&lt;br /&gt;
|-&lt;br /&gt;
|Direct Anon Qas&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|-&lt;br /&gt;
|n=1&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|-&lt;br /&gt;
|n=2&lt;br /&gt;
|User C&lt;br /&gt;
|User C&lt;br /&gt;
|Empty&lt;br /&gt;
|User C&lt;br /&gt;
|-&lt;br /&gt;
|n=3&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; |Don&#039;t work when NO logged in before, will show login page &lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |User B&lt;br /&gt;
|Direct&lt;br /&gt;
|Qas user&lt;br /&gt;
|Qas user&lt;br /&gt;
|User B&lt;br /&gt;
|Qas user&lt;br /&gt;
|-&lt;br /&gt;
|Direct Anon Qas&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|User B&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|-&lt;br /&gt;
|n=1&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|User B&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|-&lt;br /&gt;
|n=2&lt;br /&gt;
|User C&lt;br /&gt;
|User C&lt;br /&gt;
|User B&lt;br /&gt;
|User C&lt;br /&gt;
|-&lt;br /&gt;
|n=3&lt;br /&gt;
|User B&lt;br /&gt;
|User B&lt;br /&gt;
|User B&lt;br /&gt;
|User B&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;10&amp;quot; |User A&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |No&lt;br /&gt;
|Direct&lt;br /&gt;
|Qas user&lt;br /&gt;
|Qas user&lt;br /&gt;
|Empty&lt;br /&gt;
|User A&lt;br /&gt;
|-&lt;br /&gt;
|Direct Anon Qas&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|Empty&lt;br /&gt;
|User A&lt;br /&gt;
|-&lt;br /&gt;
|n=1&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|Empty&lt;br /&gt;
|User A&lt;br /&gt;
|-&lt;br /&gt;
|n=2&lt;br /&gt;
|User C&lt;br /&gt;
|User C&lt;br /&gt;
|Empty&lt;br /&gt;
|User A&lt;br /&gt;
|-&lt;br /&gt;
|n=3&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; |Don&#039;t work when NO logged in before, will show login page &lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; |User B&lt;br /&gt;
|Direct&lt;br /&gt;
|Qas user&lt;br /&gt;
|Qas user&lt;br /&gt;
|User B&lt;br /&gt;
|User A&lt;br /&gt;
|-&lt;br /&gt;
|Direct Anon Qas&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|User B&lt;br /&gt;
|User A&lt;br /&gt;
|-&lt;br /&gt;
|n=1&lt;br /&gt;
|Empty&lt;br /&gt;
|anonymous  (userId: 4)&lt;br /&gt;
|User B&lt;br /&gt;
|User A&lt;br /&gt;
|-&lt;br /&gt;
|n=2&lt;br /&gt;
|User C&lt;br /&gt;
|User C&lt;br /&gt;
|User B&lt;br /&gt;
|User A&lt;br /&gt;
|-&lt;br /&gt;
|n=3&lt;br /&gt;
|User B&lt;br /&gt;
|User B&lt;br /&gt;
|User B&lt;br /&gt;
|User A&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Handling_answer_sheets_and_samples]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsCatiContactColumn_class&amp;diff=241135</id>
		<title>QcsCatiContactColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsCatiContactColumn_class&amp;diff=241135"/>
		<updated>2026-09-20T06:41:12Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsCatiContactColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with cati data.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsGenericWeightColumn_class&amp;diff=241134</id>
		<title>QcsGenericWeightColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsGenericWeightColumn_class&amp;diff=241134"/>
		<updated>2026-09-20T06:40:15Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsGenericWeightColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification weight column. For manipulation and more info see DataCacheSpecificationWeightColumn class.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsGroupColumn_class&amp;diff=241133</id>
		<title>QcsGroupColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsGroupColumn_class&amp;diff=241133"/>
		<updated>2026-09-20T06:39:21Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsGroupColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with group data.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set column name.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;groupResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated group.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new boolean column true if the user for a row belongs to the given group.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;GroupResourceId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the group used for getting data for this column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt; Add a new group column named &amp;quot;ccGroup&amp;quot; to an existing DCS&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
number groupResourceId = 15638274;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15641385);&lt;br /&gt;
QcsGroupColumn groupcolumn = new QcsGroupColumn (&amp;quot;ccGroup&amp;quot;, groupResourceId, dcs);&lt;br /&gt;
groupcolumn.Save();&lt;br /&gt;
dcs.Save();&lt;br /&gt;
dcs.Rebuild();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Result true if the user for a row belongs to the given group.&lt;br /&gt;
&lt;br /&gt;
[[File:2018-11-07_15-31-46.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsPhoneColumn_class&amp;diff=241132</id>
		<title>QcsPhoneColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsPhoneColumn_class&amp;diff=241132"/>
		<updated>2026-09-20T06:38:01Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsPhoneColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with phone number data.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set column name.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=Unknown|Name=&amp;lt;nowiki&amp;gt;phoneType&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set phone type.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new phone column for the padata cache specification.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=number|Name=&amp;lt;nowiki&amp;gt;PhoneType&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set the phone type of the QcsPhone column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Note&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Phone type:&lt;br /&gt;
0: NotIdentified&lt;br /&gt;
1: Home1&lt;br /&gt;
2: Home2&lt;br /&gt;
3: Mobile1&lt;br /&gt;
4: Mobile2&lt;br /&gt;
5: Business1&lt;br /&gt;
6: Business2&lt;br /&gt;
7: HomeFax&lt;br /&gt;
8: BusinessFax&lt;br /&gt;
9: Main1&lt;br /&gt;
10: Main2&lt;br /&gt;
11: Fax1&lt;br /&gt;
12: Fax2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
string columnName = &amp;quot;NotIdentified&amp;quot;;&lt;br /&gt;
number phoneType = 0;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15567446);&lt;br /&gt;
QcsPhoneColumn phone = new QcsPhoneColumn(columnName, phoneType, dcs);&lt;br /&gt;
phone.Save();&lt;br /&gt;
dcs.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Phone1.png]]&lt;br /&gt;
[[File:Phone2.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsQuestionColumn_class&amp;diff=241131</id>
		<title>QcsQuestionColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsQuestionColumn_class&amp;diff=241131"/>
		<updated>2026-09-20T06:36:49Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsQuestionColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with data from collected questions.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;questionLabel&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set column name.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;questionLabel&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set column name.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the name of the column in the dcs.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new column with an explicit name.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;AnswerOptionIndex&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get which answer option is used for this column. -1 if not from answer option.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;OpenPart&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get if this column is the open part of the question.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;QuestionLabel&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the questionlabel used for getting data for this column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;QuestionnaireResourceId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the questionnaire used for getting data for this column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;SubQuestionIndex&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get which sub question is used for this column. -1 if not from subquestion.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Examples&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ex: Create question columns for Primary qnaire&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15517146);&lt;br /&gt;
&lt;br /&gt;
array aQcsQuestionColumns = dcs.CreateAllColumnsForQuestion(&amp;quot;Q1&amp;quot;,0); //Create new column(s) for a question and use primary questionnaire &lt;br /&gt;
&lt;br /&gt;
for(number i= 0; i &amp;lt; aQcsQuestionColumns.Count; i++){&lt;br /&gt;
	aQcsQuestionColumns[i].Save();&lt;br /&gt;
}&lt;br /&gt;
dcs.Save(); //Must save to make the above statements applied on DCS, but this statement does not REBUILD the DCS&lt;br /&gt;
print(dcs.ColumnNames);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ex: Copy all question columns from DCS A to DCS B&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Copy all question columns from DCS A to DCS B&lt;br /&gt;
number dcsARId = 15645155;&lt;br /&gt;
number dcsBRId = 15645157;&lt;br /&gt;
number qnaireARId = 15645137;&lt;br /&gt;
&lt;br /&gt;
DataCacheSpecification dcsA = new DataCacheSpecification(dcsARId);&lt;br /&gt;
DataCacheSpecification dcsB = new DataCacheSpecification(dcsBRId);&lt;br /&gt;
&lt;br /&gt;
dcsB.Reset();&lt;br /&gt;
dcsB.ClearSecondaryQuestionnaireJoinType();&lt;br /&gt;
dcsB.SetSecondaryQuestionnaireJoinType (qnaireARId,&amp;quot;CompanyNumber&amp;quot;,&amp;quot;CompanyNumber&amp;quot;);&lt;br /&gt;
array arrayQuestionColumns = dcsA.CreateAllColumnsForAllQuestions(0);&lt;br /&gt;
for(number i = 0; i&amp;lt;arrayQuestionColumns.Count; i++)&lt;br /&gt;
{&lt;br /&gt;
	QcsQuestionColumn questionColumn = arrayQuestionColumns[i];&lt;br /&gt;
	questionColumn.ChangeDcs(dcsB);&lt;br /&gt;
	questionColumn.Save();&lt;br /&gt;
}&lt;br /&gt;
dcsB.Save();&lt;br /&gt;
dcsB.Rebuild(true,true,0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsSampleRuleColumn_class&amp;diff=241130</id>
		<title>QcsSampleRuleColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsSampleRuleColumn_class&amp;diff=241130"/>
		<updated>2026-09-20T06:35:42Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsSampleRuleColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with sample rule data.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;sampleRuleResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated sample rule.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;sampleRuleResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated sample rule.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the name of the column in the dcs.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new column with an explicit name.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;QuestionnaireResourceId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the questionnaire used for getting data for this column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;SampleRuleResourceId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the sample rule used for getting data for this column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
[[File:2018-11-07_16-09-57.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsTableColumn_class&amp;diff=241129</id>
		<title>QcsTableColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsTableColumn_class&amp;diff=241129"/>
		<updated>2026-09-20T06:34:59Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsTableColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with data from other tables.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsUserColumn_class&amp;diff=241128</id>
		<title>QcsUserColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsUserColumn_class&amp;diff=241128"/>
		<updated>2026-09-20T06:34:03Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsUserColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with user data.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;userColumn&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The column name from the user table to get data from.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new column with user data.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;UserColumnName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the column in the user table used for getting data for this column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15639274);&lt;br /&gt;
QcsUserColumn userColumn = new QcsUserColumn(&amp;quot;ResourceId&amp;quot; ,dcs);&lt;br /&gt;
userColumn.Save();&lt;br /&gt;
dcs.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File:2018-08-22_13-56-12.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsCustomColumn_class&amp;diff=241127</id>
		<title>QcsCustomColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsCustomColumn_class&amp;diff=241127"/>
		<updated>2026-09-20T06:31:09Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsCustomColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with data calculated from script.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set column name.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;dataType&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the data type the script will return (notice this is CgScript type, not DCS type)&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;isFullColumn&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Does the script evaluate the whole column at a time or not&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new boolean column true if the user for a row belongs to the given group.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;SetAsPii&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;isPii&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;True if PII and can access other pii columns&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Declare whether this custom column contains PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsFullColumn&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Does the script evaluate the whole column at a time or not&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;Create custom column&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15638865);&lt;br /&gt;
QcsCustomColumn cc = new QcsCustomColumn(&amp;quot;test&amp;quot;, &amp;quot;number&amp;quot;, false, dcs);&lt;br /&gt;
cc.CgScript = &amp;quot;if(Q1!=empty) return Q1; else return 1;&amp;quot;;&lt;br /&gt;
cc.Save();&lt;br /&gt;
dcs.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[File:2018-08-13_10-18-03.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;Create custom full column&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15638865);&lt;br /&gt;
QcsCustomColumn cc = new QcsCustomColumn(&amp;quot;testfullcustom&amp;quot;, &amp;quot;number&amp;quot;, true, dcs);&lt;br /&gt;
cc.CgScript = &amp;quot;&lt;br /&gt;
	array result = {};&lt;br /&gt;
	number numberOfRow = Id.Count;&lt;br /&gt;
	for(number i = 0; i &amp;lt; numberOfRow; i++) {&lt;br /&gt;
		if (Q1[i] != empty)&lt;br /&gt;
			result.Add(Q1[i]);&lt;br /&gt;
		else result.Add(1);&lt;br /&gt;
	}&lt;br /&gt;
	return result;&lt;br /&gt;
&amp;quot;;&lt;br /&gt;
cc.Save();&lt;br /&gt;
dcs.Save();	  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;Create custom full column using fs.UpdatedNumberOfRows&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15638865);&lt;br /&gt;
QcsCustomColumn cc = new QcsCustomColumn(&amp;quot;testfullcustom&amp;quot;, &amp;quot;number&amp;quot;, true, dcs);&lt;br /&gt;
cc.CgScript = &amp;quot;&lt;br /&gt;
        array param = Workflow_getParameters();&lt;br /&gt;
        Dictionary localCache = param[0];&lt;br /&gt;
        FullCustomColumnSettings fs = param[1];&lt;br /&gt;
	array result = {};&lt;br /&gt;
	number numberOfRow = fs.UpdatedNumberOfRows;&lt;br /&gt;
	for(number i = 0; i &amp;lt; numberOfRow; i++) {&lt;br /&gt;
		if (Q1[i] != empty)&lt;br /&gt;
			result.Add(Q1[i]);&lt;br /&gt;
		else result.Add(1);&lt;br /&gt;
	}&lt;br /&gt;
	return result;&lt;br /&gt;
&amp;quot;;&lt;br /&gt;
cc.Save();&lt;br /&gt;
dcs.Save();	  &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsColumn_class&amp;diff=241126</id>
		<title>QcsColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsColumn_class&amp;diff=241126"/>
		<updated>2026-09-20T06:29:23Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a questionnaire cache specification column.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:QcsColumn]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=QcsQasColumn_class&amp;diff=241125</id>
		<title>QcsQasColumn class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=QcsQasColumn_class&amp;diff=241125"/>
		<updated>2026-09-20T06:28:05Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;QcsQasColumn&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a data cache specification column with Qas data.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=QcsColumn|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;questionnaireColumn&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set column name.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;questionnaireColumn&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set column name.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the name of the column in the dcs.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dcs the column should belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new column with an explicit name.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ChangeDcs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;dcs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;New DCS to put the column in&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change column to belong to another DCS. The origin DCS is not altered&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Delete&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove column from the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new column to the dcs. Naming conflicts are automatically resolved. Notice the dcs itself also needs to be saved&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;CgScript&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the cgscript for the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ColumnType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the source type of the column data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DataType&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the data type of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the column is classified as PII&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the name of the column&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PresentAsText&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if Show the data column as the option text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;QuestionnaireColumnName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the column in the qas table used for getting data for this column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;QuestionnaireResourceId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the questionnaire used for getting data for this column.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=DataCacheSpecification_class&amp;diff=241124</id>
		<title>DataCacheSpecification class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=DataCacheSpecification_class&amp;diff=241124"/>
		<updated>2026-09-20T05:40:07Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;DataCacheSpecification&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a DataCache specification.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Description=&amp;lt;nowiki&amp;gt;Instanciate an existing instance using the current context datacache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;ResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Resource Id of the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Instanciate an existing instance using the resource id of a datacache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;ResourceName&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Resource name of the new DataCache&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=array|Name=&amp;lt;nowiki&amp;gt;Questionnaire Ids&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;List of Questionnaires to use in the creation. Must all belong to same template&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create a new datacache using quick setup&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;AddFilter&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;filterQuestionLabel&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Question to apply filter to. If empty, then clear current filters&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;filterValue&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Value of the filter&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Add a filter to the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;AddQuestionnaire&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Questionnaire to add&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Add another questionnaire to the datacache. Return false if already added&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ClearFilter&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Remove all filters from the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;ClearSecondaryQuestionnaireJoinType&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Delete all the secondary questionnaires which are joined with the primary&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;CreateAllColumnsForAllQuestions&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Find and create all column for all questions. They still need to be saved individually to be added.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;CreateAllColumnsForQuestion&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;question&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;QuestionLabel for the question you want all the dcs columns for&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Find and create all column for a given question. They still need to be saved individually to be added.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;CreateAllColumnsForQuestions&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=array|Name=&amp;lt;nowiki&amp;gt;questions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;QuestionLabels for the questions you want all the dcs columns for&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set the associated questionnaire. Set to 0 to use primary questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Find and create all column for a given question. They still need to be saved individually to be added.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;DeleteSecondaryQuestionnaireJoinType&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;secondaryQuestionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Which secondary questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Delete the secondary questionnaire which is joined with the primary&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=object|Name=&amp;lt;nowiki&amp;gt;EvalWhere&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;whereExpression&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The expression to execute. It must contain &#039;where&#039; and NOT start with a equal sign, and have 1 and only one semicolon in it&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a single where expression up against the current DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;EvalWhere&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;whereExpressions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The expressions to execute. They must contain &#039;where&#039; and MAY start with a equal sign, and have 1 and only one semicolon in it. Consider using EvalWhereExps instead.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a number of where expressions up against the current DataCache. If there are 2 or more expressions, the result is cached. Context weight and filters are ignored.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;EvalWhere&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;whereExpressions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The expressions to execute. They must contain &#039;where&#039; and MAY start with a equal sign, and have 1 and only one semicolon in it&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Column name of the weight to use in filter&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a number of where expressions up against the current DataCache using a weight. If there are 2 or more expressions, the result is cached. Context weight and filters are ignored. Consider using EvalWhereExps instead.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;EvalWhere&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;whereExpressions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The expressions to execute. They must contain &#039;where&#039; and MAY start with a equal sign, and have 1 and only one semicolon in it&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Column name of the weight to use in filter&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;filters&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Extra filters that apply to all where expressions&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a number of where expressions up against the current DataCache using a weight. If there are 2 or more expressions, the result is cached. Context weight and filters are ignored. Consider using EvalWhereExps instead.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;EvalWhere&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;whereExpressions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The expressions to execute. They must contain &#039;where&#039; and MAY start with a equal sign, and have 1 and only one semicolon in it&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Column name of the weight to use in filter&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;filters&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Extra filters that apply to all where expressions&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;freeTextFilters&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Extra free text search filters that apply to all where expressions&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a number of where expressions up against the current DataCache using a weight. If there are 2 or more expressions, the result is cached. Context weight and filters are ignored. Consider using EvalWhereExps instead.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;EvalWhereExps&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;whereExpressions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dictionary of string keys to WhereExpFragment values.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a number of where expressions up against the current DataCache. If there are 2 or more expressions, the result is cached. Context weight and filters are ignored.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;EvalWhereExps&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;whereExpressions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dictionary of string keys to WhereExpFragment values.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Column name of the weight to use in filter&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a number of where expressions up against the current DataCache using a weight. If there are 2 or more expressions, the result is cached. Context weight and filters are ignored.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;EvalWhereExps&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;whereExpressions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dictionary of string keys to WhereExpFragment values.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Column name of the weight to use in filter&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;filters&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Extra filters that apply to all where expressions&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a number of where expressions up against the current DataCache using a weight. If there are 2 or more expressions, the result is cached. Context weight and filters are ignored.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;EvalWhereExps&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;whereExpressions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dictionary of string keys to WhereExpFragment values.&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;weight&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Column name of the weight to use in filter&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;filters&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Extra filters that apply to all where expressions&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;freeTextFilters&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Extra free text search filters that apply to all where expressions&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Evaluate a number of where expressions up against the current DataCache. If there are 2 or more expressions, the result is cached. Context weight and filters are ignored.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;GetAllSecondaryQuestionnaireJoinType&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Get all the secondary questionnaires that are joined with the primary&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;GetSecondaryQuestionnaireJoinType&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;secondaryQuestionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Which secondary questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Get the way secondary questionnaires are joined with the primary, default is empty,empty (userId to userId)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;MakeContext&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Make the current DataCache the context DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Rebuild&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;forceRebuild&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Rebuild even if dcs was already built and unchanged&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;waitForCompletion&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Do not return until the rebuild is complete&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;minAgeInMinutes&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Rebuild only if last build ended more than this amount of minutes ago, 0 to disable check. This supersedes forceRebuild&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;forceFull&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Force a complete rebuild, even if dcs is configured for partial rebuilds&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=object|Name=&amp;lt;nowiki&amp;gt;extraParameter&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;If the dcs to build is built from a script it will get this as the 5th parameter&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Rebuild the dcs. Notice this will commit the current transaction&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Rebuild&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;forceRebuild&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Rebuild even if dcs was already built and unchanged&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;waitForCompletion&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Do not return until the rebuild is complete&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;minAgeInMinutes&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Rebuild only if last build ended more than this amount of minutes ago, 0 to disable check. This supersedes forceRebuild&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;forceFull&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Force a complete rebuild, even if dcs is configured for partial rebuilds&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Rebuild the dcs. Notice this will commit the current transaction&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Rebuild&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;forceRebuild&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Rebuild even if dcs was already built and unchanged&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;waitForCompletion&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Do not return until the rebuild is complete&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;minAgeInMinutes&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Rebuild only if last build ended more than this amount of minutes ago, 0 to disable check. This supersedes forceRebuild&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Rebuild the dcs. Notice this will commit the current transaction&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Rebuild&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Rebuild the dcs (true, true, -1). Notice this will commit the current transaction&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;RemoveFilter&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;filterQuestionLabel&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Question to apply filter to. If empty, then clear current filters&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Remove  a filter from the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Reset&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Reset to initial quick setup&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Save the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;SetSecondaryQuestionnaireJoinType&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;secondaryQuestionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Which secondary questionnaire&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;primaryQuestionnaireMapping&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Which question to map to. Empty maps to userId. Empty string maps to QasId&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;secondaryQuestionnaireMapping&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Which question to map to. Empty maps to userId. Empty string maps to QasId&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Change the way secondary questionnaires are joined with the primary, default is empty,empty (userId to userId)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;AutoUpdate&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set Auto Update&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=AxisSet|Name=&amp;lt;nowiki&amp;gt;AxisSet&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get info on axis in the dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=object|Name=&amp;lt;nowiki&amp;gt;BuildUsingWorkflowScriptParameter&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set parameter that script gets as first parameter&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;BuildUsingWorkflowScriptResourceId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set resource id of script to use for building full custom dcs&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;BuildWithWeight&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set if the DataCache should be built using weights&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;CachedRecords&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;How many records does the DataCache currently hold&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;ColumnNames&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;List of Column names&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;Columns&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;List of Column objects&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Completed&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include completed&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Deleted&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include deleted&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Description&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set description of the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Disabled&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include disabled&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;InterviewFailed&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include marked as interview failed&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;InterviewSucceeded&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include marked as interview succeeded&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsOutOfDate&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Does the DataCache need to be rebuilt to have the correct content&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsPii&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Whether the data cache contains columns classified as PII.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Language&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set the iso code used in building the items that depend on a specific language. If empty then use default language.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=DateTime|Name=&amp;lt;nowiki&amp;gt;LastUpdated&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Time of the last rebuild&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Name of the DataCache resource&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Normal&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include normal&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;NotStarted&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include those not yet started&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;OutsideTarget&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include those marked outside target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PartialRebuild&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set if dcs should only update QAS changed since last build&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Partly&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include partly completed&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=ProfilingResult|Name=&amp;lt;nowiki&amp;gt;ProfileFromLastEval&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get the profile result from the last run of EvalWhere.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;QuestionnaireIds&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;List of the questionnaires used in the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;QuestionnaireTemplateId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The resource id of the questionnaire template used in the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;QuotaFull&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include those with full quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ResourceId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The Id of the DataCache&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Test&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set include those marked as test&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;UpdateFrequence&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/Set Update Frequence in minutes&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=Array of objects|Name=&amp;lt;nowiki&amp;gt;Weights&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get list of existing weights.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|StaticMethods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Array of DataCacheSpecification|Name=&amp;lt;nowiki&amp;gt;DataCacheSpecification_getByParent&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;parentResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Resource id of the parent to fetch all children dcs for&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Get all children DCS&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Examples&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ex1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DCS_use(37244952); // set DCS context&lt;br /&gt;
string e1 = &amp;quot;count() where S_Age == [1] &amp;amp;&amp;amp; M_Travel == [1,2];&amp;quot;;&lt;br /&gt;
Dictionary d =&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;exp1&amp;quot;: &amp;quot;count() where S_Age == [1] &amp;amp;&amp;amp; M_Travel == [1,2];&amp;quot;,&lt;br /&gt;
 &amp;quot;exp2&amp;quot;: &amp;quot;count() where S_Age == [2] &amp;amp;&amp;amp; M_Travel == [1];&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
print(DCS_evaluateWhereExpression(e1)); // 68&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(); // Represent a DCS which is used as current DCS context&lt;br /&gt;
print(dcs.EvalWhere(e1)); // 68&lt;br /&gt;
print(dcs.EvalWhere(d)); // {&amp;quot;exp1&amp;quot;: 68, &amp;quot;exp2&amp;quot;: 46}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ex2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
string e1 = &amp;quot;count() where S_Age == [1] &amp;amp;&amp;amp; M_Travel == [1,2];&amp;quot;;&lt;br /&gt;
Dictionary d =&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;exp1&amp;quot;: &amp;quot;count() where S_Age == [1] &amp;amp;&amp;amp; M_Travel == [1,2];&amp;quot;,&lt;br /&gt;
 &amp;quot;exp2&amp;quot;: &amp;quot;count() where S_Age == [2] &amp;amp;&amp;amp; M_Travel == [1];&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(37244952); // Represents a DCS which has Resource Id: 37244952&lt;br /&gt;
print(dcs.EvalWhere(e1)); // 68&lt;br /&gt;
print(dcs.EvalWhere(d)); // {&amp;quot;exp1&amp;quot;: 68, &amp;quot;exp2&amp;quot;: 46}&lt;br /&gt;
dcs.MakeContext(); // or you can use DCS_use(RID) instead&lt;br /&gt;
print(DCS_evaluateWhereExpression(e1)); // without the previous statement (dcs.MakeContext();), you will get error at this line because there is no DCS context is set, so you can not use DCS_evaluateWhereExpression(e1)&lt;br /&gt;
dcs.Partly = false; // Not include the partly completed QASs&lt;br /&gt;
dcs.NotStarted = false; // Not include the not started QASs&lt;br /&gt;
dcs.Save(); // Must save to make the above statements applied on DCS, but this statement does not REBUILD the DCS&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ex 3:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
ProfilingResult pr;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(12006923); &lt;br /&gt;
pr = dcs.ProfileFromLastEval;&lt;br /&gt;
pr.EnableProfiling = true;&lt;br /&gt;
dcs.EvalWhere({&lt;br /&gt;
 &amp;quot;ex1&amp;quot;: &amp;quot;count() where true&amp;quot;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
print(pr.CompileTime); // 0.1694&lt;br /&gt;
print(pr.CountResult); // {&amp;quot;5&amp;quot;: {&amp;quot;2&amp;quot;: 1}, &amp;quot;9&amp;quot;: {&amp;quot;4&amp;quot;: 1}} &lt;br /&gt;
print(pr.DependencyGraphTime); // 0&lt;br /&gt;
print(pr.TimeResult); // {&amp;quot;10&amp;quot;: {&amp;quot;-1&amp;quot;: 0.0158, &amp;quot;4&amp;quot;: 0.0158}, &amp;quot;11&amp;quot;: {&amp;quot;-1&amp;quot;: 0.0021, &amp;quot;4&amp;quot;: 0.0021}, &amp;quot;5&amp;quot;: {&amp;quot;-1&amp;quot;: 1.1024, &amp;quot;2&amp;quot;: 1.1024}, &amp;quot;9&amp;quot;: {&amp;quot;-1&amp;quot;: 0.0063, &amp;quot;4&amp;quot;: 0.0063}}&lt;br /&gt;
print(pr.WhereExpTime); // 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ex 4:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15517146);&lt;br /&gt;
&lt;br /&gt;
array questionColumns = dcs.CreateAllColumnsForQuestion(&amp;quot;Q1&amp;quot;,0); //Create new column(s) for a question and use primary questionnaire &lt;br /&gt;
&lt;br /&gt;
for(number i= 0; i &amp;lt; questionColumns.Count; i++){&lt;br /&gt;
 questionColumns[i].Save(); //or method .Delete() in case removing column from dcs&lt;br /&gt;
}&lt;br /&gt;
dcs.Save(); //Must save to make the above statements applied on DCS, but this statement does not REBUILD the DCS&lt;br /&gt;
print(dcs.ColumnNames);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ex 5:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15517146);&lt;br /&gt;
&lt;br /&gt;
array questionColumns = dcs.CreateAllColumnsForAllQuestions(15517148); //Create ALL columns for ALL questions.Set to 0 to use primary questionnaire&lt;br /&gt;
&lt;br /&gt;
for(number i= 0; i &amp;lt; questionColumns.Count; i++){&lt;br /&gt;
 questionColumns[i].Save();&lt;br /&gt;
}&lt;br /&gt;
dcs.Save(); //Must save to make the above statements applied on DCS, but this statement does not REBUILD the DCS&lt;br /&gt;
print(dcs.ColumnNames);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ex 6:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15558382);&lt;br /&gt;
dcs.AddQuestionnaire(15558383);&lt;br /&gt;
dcs.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ex 7:&#039;&#039;&#039; Using freeTextFilters on EvalWhere&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(15557696);&lt;br /&gt;
Dictionary d ={&lt;br /&gt;
	&amp;quot;exp&amp;quot;: &amp;quot;selectColumn(Id) where true;&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
string freeTextFilters  = &amp;quot;UserId: [39149 TO 47878]&amp;quot;;&lt;br /&gt;
dcs.EvalWhere(d,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,freeTextFilters);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ex 8:&#039;&#039;&#039; CreateAllColumnsForQuestions&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//*****Example for using CreateAllColumnsForQuestions*****//&lt;br /&gt;
//Constructor a DCS&lt;br /&gt;
number DCSRId = 15572568;&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification(DCSRId);&lt;br /&gt;
//Add columns into the DCS&lt;br /&gt;
number qnaireRId = 15572331;// any qnaire that you want to add columns to the above DCS  &lt;br /&gt;
array questionsLabel = {&amp;quot;District&amp;quot;, &amp;quot;Age&amp;quot;};&lt;br /&gt;
Dictionary d = dcs.CreateAllColumnsForQuestions(questionsLabel, qnaireRId);//{&amp;quot;Age&amp;quot;: {QcsQuestionColumn}, &amp;quot;District&amp;quot;: {QcsQuestionColumn}}&lt;br /&gt;
array arrayQcsColumn = d.Values;//{{QcsQuestionColumn},{QcsQuestionColumn}}&lt;br /&gt;
&lt;br /&gt;
for(number i=0;i&amp;lt;arrayQcsColumn.Count; i++)&lt;br /&gt;
{&lt;br /&gt;
	array QcsColumn = arrayQcsColumn[i];//{QcsQuestionColumn}&lt;br /&gt;
	for(number j=0; j&amp;lt;QcsColumn.Count; j++)&lt;br /&gt;
	{&lt;br /&gt;
		QcsQuestionColumn col = QcsColumn[j];&lt;br /&gt;
		col.Save();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
//Save DCS&lt;br /&gt;
dcs.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Ex 9:&#039;&#039;&#039; Set/GetSecondaryQuestionnaireJoinType&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//*****Example for using Set/GetSecondaryQuestionnaireJoinType*****//&lt;br /&gt;
&lt;br /&gt;
//case name(question type text), name (question type number)&lt;br /&gt;
DCS_use(15567484);&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification();&lt;br /&gt;
string primaryQnaireMapping = &amp;quot;CompanyNo_Text&amp;quot;;&lt;br /&gt;
string secondaryQnaireMapping = &amp;quot;CompanyNo&amp;quot;;&lt;br /&gt;
dcs.SetSecondaryQuestionnaireJoinType(15567469,primaryQnaireMapping,secondaryQnaireMapping);&lt;br /&gt;
dcs.Save();&lt;br /&gt;
dcs.GetSecondaryQuestionnaireJoinType(15567469);//{CompanyNo_Text,CompanyNo}&lt;br /&gt;
DCS_rebuild();&lt;br /&gt;
&lt;br /&gt;
//case null, name: user id in primary is same as question in secondary&lt;br /&gt;
DCS_use(15567484);&lt;br /&gt;
DataCacheSpecification dcs = new DataCacheSpecification();&lt;br /&gt;
string primaryQnaireMapping = empty;&lt;br /&gt;
string secondaryQnaireMapping = &amp;quot;userId_A&amp;quot;;&lt;br /&gt;
dcs.SetSecondaryQuestionnaireJoinType(15567469,primaryQnaireMapping,secondaryQnaireMapping);&lt;br /&gt;
dcs.Save();&lt;br /&gt;
DCS_rebuild();&lt;br /&gt;
dcs.GetSecondaryQuestionnaireJoinType(15567469);//{Empty,userId_A}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Classes]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Quota_class&amp;diff=241123</id>
		<title>Quota class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Quota_class&amp;diff=241123"/>
		<updated>2026-08-28T03:33:54Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;Quota&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;The questionnaire&#039;s quota object.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=Array|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Quota resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Fetch exists quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Quota&#039;s name&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=Questionnaire|Name=&amp;lt;nowiki&amp;gt;questionnaire&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire contains this quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create and add new quota to questionnaire object&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;target&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Target count for the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;expression&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;CGScript expression for the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create new quota in the current questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;target&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Target count for the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;expression&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;CGScript expression for the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create new quota in a specific questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Save quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=object|Name=&amp;lt;nowiki&amp;gt;this[] { get; }&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;index&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Index&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Backward-compatible indexer&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;this[] { get; }&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;index&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Index&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=object|Name=&amp;lt;nowiki&amp;gt;value&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Value to set&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Backward-compatible indexer&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=number|Name=&amp;lt;nowiki&amp;gt;Average&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Average of the objects in the Array object. Can only use if all the elements are of type Number&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Current&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Gets the number of completed resource project questionnaires in the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Description&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Quota description&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Disabled&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Quota disabled or not&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Expression&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Quota expression&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Id&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Quota resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=number|Name=&amp;lt;nowiki&amp;gt;Max&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Largest of all the objects in the Array object. Can only use if all the elements are of type Number&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=number|Name=&amp;lt;nowiki&amp;gt;Min&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Smallest of all the objects in the Array object. Can only use if all the elements are of type Number&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;OnGoing&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Gets the number of on going resource project questionnaires in the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;OutsideTarget&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Gets the number of outside target resource project questionnaires in the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;PreStratification&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Quota pre-stratification&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;QuestionnaireId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Resource id of questionnaire belong to&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;QuotaFull&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Gets the number of quota full resource project questionnaires in the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=number|Name=&amp;lt;nowiki&amp;gt;Sum&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Sum of all the objects in the Array object. Can only use if all the elements are of type Number&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Target&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Quota target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;TargetReached&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Gets information about whether or not the target for this quota has been reached&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|StaticMethods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Quota_deleteAllQuotas&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Deletes all quotas from the current Questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Quota_deleteAllQuotas&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int?|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Deletes all quotas from the specified Questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Quota_deleteQuota&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Deletes the quota with the given name from the current Questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Quota_deleteQuota&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int?|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Deletes the quota with the given name from the specified Questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Array of Quota|Name=&amp;lt;nowiki&amp;gt;Quota_getAllQuotas&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Returns all quotas for the current Questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Array of Quota|Name=&amp;lt;nowiki&amp;gt;Quota_getAllQuotas&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int?|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Returns all quotas for the specified Questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Quota|Name=&amp;lt;nowiki&amp;gt;Quota_getQuotaByName&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Returns the quota with the given name in the current Questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Quota|Name=&amp;lt;nowiki&amp;gt;Quota_getQuotaByName&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int?|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Returns the quota with the given name in the specified Questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Array of Quota|Name=&amp;lt;nowiki&amp;gt;Quota_getQuotasByNameLike&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name pattern to search for&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Returns quotas whose names contain the given string in the current Questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Array of Quota|Name=&amp;lt;nowiki&amp;gt;Quota_getQuotasByNameLike&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name pattern to search for&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int?|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Returns quotas whose names contain the given string in the specified Questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Quota|Name=&amp;lt;nowiki&amp;gt;Quota_new&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;Quota target&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Target count for the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota expression&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;CGScript expression for the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Obsolete=1&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Creates a new quota object for the current questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Quota|Name=&amp;lt;nowiki&amp;gt;Quota_new&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;Quota target&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Target count for the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota expression&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;CGScript expression for the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int?|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Obsolete=1&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Creates a new quota object for the specified Questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Quota_save&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Quota|Name=&amp;lt;nowiki&amp;gt;Quota&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The quota to save&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Obsolete=1&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Saves the quota object&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Quota_targetReached&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Returns true if any quota has reached its target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Quota_targetReached&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota to check&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Returns true if the named quota has reached its target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Quota_targetReached&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Returns true if any quota in the specified questionnaire has reached its target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Quota_targetReached&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota to check&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Returns true if the named quota in the specified questionnaire has reached its target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Quota_updateAllQuotas&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Updates all quotas for the current Questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Quota_updateAllQuotasForAllQASs&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Updates all quotas for all QASs in the current Questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Quota_updateAllQuotasForAllQASs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int?|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Updates all quotas for all QASs in the specified Questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Quota_updateQuota&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Updates the specified quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Quota_updateQuotaForAllQASs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Updates the specified quota for all QASs in the current Questionnaire context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Quota_updateQuotaForAllQASs&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;Quota name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Name of the quota&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int?|Name=&amp;lt;nowiki&amp;gt;Quota questionnaire resource id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The questionnaire resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Updates the specified quota for all QASs in the specified Questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;	&lt;br /&gt;
//create quota for qnaire&lt;br /&gt;
Questionnaire qnaire = new Questionnaire (17148177);&lt;br /&gt;
Quota quota = new Quota (&amp;quot;Male&amp;quot;, qnaire);&lt;br /&gt;
quota.Target = 100;&lt;br /&gt;
quota.Expression = &amp;quot;Gender == 1&amp;quot;;&lt;br /&gt;
quota.Description = &amp;quot;xxxxx&amp;quot;;&lt;br /&gt;
quota.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=AppProduct_class&amp;diff=241037</id>
		<title>AppProduct class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=AppProduct_class&amp;diff=241037"/>
		<updated>2025-09-09T07:39:58Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;AppProduct&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents an AppProduct.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=AppProductRole|Name=&amp;lt;nowiki&amp;gt;AddRole&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Add a new blank role&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Apply all changes to the AppProduct&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DevelopmentUrl&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the development URL&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Enabled&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if the product is enabled&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;IsSales&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if this is a sales product&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=LocalizedString|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the localized name&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Order&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the order&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=ResourceEdit|Name=&amp;lt;nowiki&amp;gt;ResourceModel&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Edit the Resource&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=CompatibilityArray|Name=&amp;lt;nowiki&amp;gt;Roles&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get the list of roles&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;SvgIcon&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the SVG icon content&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Url&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the product URL&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|StaticMethods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=AppProduct|Name=&amp;lt;nowiki&amp;gt;AppProduct_create&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Create a new AppProduct&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=AppProduct|Name=&amp;lt;nowiki&amp;gt;AppProduct_getById&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Id of the item to fetch&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Fetch AppProduct by primary key. Returns Empty if not found&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=TenantMapping_class&amp;diff=241036</id>
		<title>TenantMapping class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=TenantMapping_class&amp;diff=241036"/>
		<updated>2025-09-09T07:37:08Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;TenantMapping&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Tenant mapping and parent folder for the tenant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=TenantMappingRole|Name=&amp;lt;nowiki&amp;gt;AddRoleMapping&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;role&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The tenant role to add&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Add blank Role mapping&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ParentFolder&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;The parent folder id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=CompatibilityArray|Name=&amp;lt;nowiki&amp;gt;RoleMappings&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;List of role mappings&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Tenant_class&amp;diff=241035</id>
		<title>Tenant class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Tenant_class&amp;diff=241035"/>
		<updated>2025-09-09T07:35:43Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;Tenant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a SsoTenant.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;AddPasswordCompatTenantUsers&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;userRoles&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dictionary of user id and array of roles&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;For backwards compatibility with username/password users, using this you can setup a user to belong to the current tenant with the given role list&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;RemovePasswordCompatTenantUsers&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=array|Name=&amp;lt;nowiki&amp;gt;users&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;User ids&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Remove all fake tenant roles for the given user ids&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Apply all changes to the SsoTenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TenantMapping|Name=&amp;lt;nowiki&amp;gt;Mapping&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Role mapping and parent folder for the tenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TenantOnboarding|Name=&amp;lt;nowiki&amp;gt;Onboarding&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Onboarding info for the tenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=ResourceEdit|Name=&amp;lt;nowiki&amp;gt;ResourceModel&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Edit the Resource&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;TenantId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the tenant id - e.g. for Microsoft this is a guid&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|StaticMethods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Tenant|Name=&amp;lt;nowiki&amp;gt;Tenant_create&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Create a new SsoTenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Tenant|Name=&amp;lt;nowiki&amp;gt;Tenant_getById&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Id of the item to fetch&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Fetch SsoTenant by primary key&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Tenant|Name=&amp;lt;nowiki&amp;gt;Tenant_getByTenantId&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Id of the item to fetch&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Fetch SsoTenant by tenant id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Tenant t = Tenant_getById(tenatId);&lt;br /&gt;
//t.AddPasswordCompatTenantUsers({userId: {&amp;quot;mapping&amp;quot;}});&lt;br /&gt;
t.AddPasswordCompatTenantUsers({20708200: {&amp;quot;agent-1&amp;quot;}});&lt;br /&gt;
t.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=ResourceEdit_class&amp;diff=241034</id>
		<title>ResourceEdit class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=ResourceEdit_class&amp;diff=241034"/>
		<updated>2025-08-26T03:32:24Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: Created page with &amp;quot;{{CGscriptClass_Template |Name=&amp;lt;nowiki&amp;gt;ResourceEdit&amp;lt;/nowiki&amp;gt; |Description=&amp;lt;nowiki&amp;gt;Generic class for editing resources&amp;lt;/nowiki&amp;gt; |InheritsFrom=object|Methods= {{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}} |Properties= {{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;CalculatedManHours&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;ResourceEdit&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Generic class for editing resources&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;CalculatedManHours&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set calculated man hours flag&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;HasResourceTemplateId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Indicates if resource can be templated&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;InheritAccess&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set inherit access flag&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ParentId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the parent resource id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ResourceManHours&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set resource man hours&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ResourceTemplateId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set resource template id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ShortName&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the resource short name&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;TimeregEnabled&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set timereg enabled flag&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Tenant_class&amp;diff=241033</id>
		<title>Tenant class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Tenant_class&amp;diff=241033"/>
		<updated>2025-08-14T08:55:40Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;Tenant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a SsoTenant.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;AddPasswordCompatTenantUsers&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;userRoles&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dictionary of user id and array of roles&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;For backwards compatibility with username/password users, using this you can setup a user to belong to the current tenant with the given role list&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;RemovePasswordCompatTenantUsers&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=array|Name=&amp;lt;nowiki&amp;gt;users&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;User ids&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Remove all fake tenant roles for the given user ids&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Apply all changes to the SsoTenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TenantMapping|Name=&amp;lt;nowiki&amp;gt;Mapping&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Role mapping and parent folder for the tenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TenantOnboarding|Name=&amp;lt;nowiki&amp;gt;Onboarding&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Onboarding info for the tenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=ResourceEdit|Name=&amp;lt;nowiki&amp;gt;ResourceModel&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Edit the Resource&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;TenantId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the tenant id - e.g. for Microsoft this is a guid&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|StaticMethods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Tenant|Name=&amp;lt;nowiki&amp;gt;Tenant_create&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Create a new SsoTenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Tenant|Name=&amp;lt;nowiki&amp;gt;Tenant_getById&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Id of the item to fetch&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Fetch SsoTenant by primary key. Returns Empty if not found&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Tenant t = Tenant_getById(tenatId);&lt;br /&gt;
//t.AddPasswordCompatTenantUsers({userId: {&amp;quot;mapping&amp;quot;}});&lt;br /&gt;
t.AddPasswordCompatTenantUsers({20708200: {&amp;quot;agent-1&amp;quot;}});&lt;br /&gt;
t.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Tenant_class&amp;diff=241032</id>
		<title>Tenant class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Tenant_class&amp;diff=241032"/>
		<updated>2025-08-14T08:48:50Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;Tenant&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Represents a SsoTenant.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;AddPasswordCompatTenantUsers&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;userRoles&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Dictionary of user id and array of roles&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;For backwards compatibility with username/password users, using this you can setup a user to belong to the current tenant with the given role list&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;RemovePasswordCompatTenantUsers&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=array|Name=&amp;lt;nowiki&amp;gt;users&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;User ids&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Remove all fake tenant roles for the given user ids&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Apply all changes to the SsoTenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TenantMapping|Name=&amp;lt;nowiki&amp;gt;Mapping&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Role mapping and parent folder for the tenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TenantOnboarding|Name=&amp;lt;nowiki&amp;gt;Onboarding&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Onboarding info for the tenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=ResourceEdit|Name=&amp;lt;nowiki&amp;gt;ResourceModel&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Edit the Resource&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;TenantId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the tenant id - e.g. for Microsoft this is a guid&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|StaticMethods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Tenant|Name=&amp;lt;nowiki&amp;gt;Tenant_create&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Create a new SsoTenant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Tenant|Name=&amp;lt;nowiki&amp;gt;Tenant_getById&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Id of the item to fetch&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Fetch SsoTenant by primary key. Returns Empty if not found&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Questionnaire_class&amp;diff=241031</id>
		<title>Questionnaire class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Questionnaire_class&amp;diff=241031"/>
		<updated>2025-08-14T08:40:12Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;Questionnaire&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;The questionnaire object.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;id&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Id of questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Fetch exists questionnaire by id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;qualifiedName&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Qualified name of questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Fetch exists questionnaire by name&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Questionnaire&#039;s name&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;parentId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Resource parent&#039;s id&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;layoutId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Questionnaire layout&#039;s id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create new questionnaire with new questionnaire template and use default resource template&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;name&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Questionnaire&#039;s name&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;parentId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Resource parent&#039;s id&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;layoutId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Questionnaire layout&#039;s id&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;templateId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Questionnaire template&#039;s id&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;resourceTemplateId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Resource tempalte&#039;s id of questionnaire. Set it&#039;s 0 to use default resource template&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Create new questionnaire with exist template&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;GetLink&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Get the url to participate in answering the questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;RebuildSample&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Rebuild all sample rules in questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;Save&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Save questionnaire. It also save for new questionnaire template, sample rule, quota. For update, you should call save in specific object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=DateTime|Name=&amp;lt;nowiki&amp;gt;AutomaticCloseDate&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Automatic close date&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=DateTime|Name=&amp;lt;nowiki&amp;gt;AutomaticReleaseDate&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Automatic release date&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;AverageInterviewSucceededTime&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Average successful interview time&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;Completed&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire status completed or not&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;CreatedByUserId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;User created this questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=DateTime|Name=&amp;lt;nowiki&amp;gt;CreatedDate&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;When this questionnaire created&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=DateTime|Name=&amp;lt;nowiki&amp;gt;DevelopmentEndDate&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Development end date&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=DateTime|Name=&amp;lt;nowiki&amp;gt;DevelopmentStartDate&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Development start date&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;DisplayName&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire name shown to respondents in their point list&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=number|Name=&amp;lt;nowiki&amp;gt;EstimatedTotalTime&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Estimated total time to run out questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Id&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Reosurce id of questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ImpersonationUserId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Run questionnaire context with permission of specific user. Set its value is 0 to remove&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;LayoutId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire layout&#039;s id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ModifiedByUserId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;User last updated this questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=DateTime|Name=&amp;lt;nowiki&amp;gt;ModifiedDate&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Last time modify this questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Name&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire name&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfActiveNotContacted&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of not started answer sheets which are related to active sample rules&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfActiveSample&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of answer sheets that are related to existing sample rules and where these sample rules are active (you can deactivate sample rules in the CATI)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfAvailable&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of answer sheets (both created via samples, from import, as well as through recurring links) that have not yet been answered.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfAvailableActive&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of answer sheets which are still active for answering. In other words the available answer sheets minus any sheets that have failed (user does not want to answer)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfCompleted&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of answer sheets which were completed&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfCompletedToday&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of answer sheets which were completed on current date (server time-zone)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfInterviewSucceeded&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of interviews carried out through CATI that were successful.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfInterviewSucceededToday&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of interviews carried out through CATI that were successful on current date (server time-zone)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfNotContacted&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of answer sheets which have yet not been started&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfPartly&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Specifies the number of sample respondents that have partly answered the questionnaire (means they have at least clicked the link to open their personal version of the questionnaire)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfSample&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Total number of answer sheets related to the questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;NumberOfTest&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Number of test answer sheets&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ParentId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Parent resource&#039;s id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;QualifiedName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Get qualified name of questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=Array of Quota|Name=&amp;lt;nowiki&amp;gt;Quotas&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;All quotas associated with questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;ResourceTemplateId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Resource tempalte&#039;s id of questionnaire. Set it&#039;s 0 to use default resource template&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=Array of SampleRule|Name=&amp;lt;nowiki&amp;gt;SampleRules&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;All sample rules associated with questionnaire&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=QuestionnaireStatus constant|Name=&amp;lt;nowiki&amp;gt;Status&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire status. Use constant QUESTIONNAIRE_STATUS_xxx&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;Target&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire target number&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;TemplateId&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire template&#039;s id&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=int|Name=&amp;lt;nowiki&amp;gt;TimeEstimateId&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire time estimate&#039;s id. Set its value is 0 to remove&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;TimeEstimateName&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Questionnaire time estimate&#039;s name. Set its value is empty to remove&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|StaticMethods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Questionnaire|Name=&amp;lt;nowiki&amp;gt;Questionnaire_current&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Get questionnaire in current QAS or PQ context&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//create new qnaire and also new qnaireTemplate under&lt;br /&gt;
string qnaireName = &amp;quot;test&amp;quot;;&lt;br /&gt;
number parentId = 17148135;&lt;br /&gt;
number layoutId = 15735155;&lt;br /&gt;
Questionnaire qnaire = new Questionnaire (qnaireName, parentId, layoutId);&lt;br /&gt;
qnaire.ResourceTemplateId = 11088801;&lt;br /&gt;
qnaire.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//create new qnaire using existing qnaireTemplate&lt;br /&gt;
string qnaireName = &amp;quot;test&amp;quot;;&lt;br /&gt;
number parentId = 17148135;&lt;br /&gt;
number layoutId = 15735155;&lt;br /&gt;
number qnaireTemplateId = 17148298;&lt;br /&gt;
number resourceTemplateId = 11088801;// set 0 to use the default&lt;br /&gt;
Questionnaire qnaire = new Questionnaire (qnaireName, parentId, layoutId, qnaireTemplateId, resourceTemplateId);&lt;br /&gt;
qnaire.Save();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Microsoft_login_Catglobe_Admin&amp;diff=241019</id>
		<title>Microsoft login Catglobe Admin</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Microsoft_login_Catglobe_Admin&amp;diff=241019"/>
		<updated>2025-07-28T10:44:50Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Guides]]&lt;br /&gt;
Documentation for Catglobe site admins:&lt;br /&gt;
&lt;br /&gt;
= Setting up Sso =&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
You need to contact Catglobe support to enable your site for Entra login.&lt;br /&gt;
&lt;br /&gt;
== Configuration steps ==&lt;br /&gt;
&lt;br /&gt;
==== AppProducts ====&lt;br /&gt;
&lt;br /&gt;
1. Setup AppProducts in your Catglobe site&lt;br /&gt;
&lt;br /&gt;
You can access the AppProducts list from the menu on your Catglobe site: ADMINISTRATION -&amp;gt; SINGLE-SIGN-ON -&amp;gt; AppProducts&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct1.png]]&lt;br /&gt;
&lt;br /&gt;
Or via the url: yourCatglobeSite/Sso/Admin/AppProducts&lt;br /&gt;
&lt;br /&gt;
Here you can see a create button, click on the button and follow the setup for your AppProduct&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct2.png]]&lt;br /&gt;
&lt;br /&gt;
2. Add Roles in your AppProduct&lt;br /&gt;
&lt;br /&gt;
At Roles step, you can see an Add Role button, click on the button to start setup roles&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct3.png]]&lt;br /&gt;
&lt;br /&gt;
3. Add group membership for each role&lt;br /&gt;
&lt;br /&gt;
While adding a role, you need to select a resource template and group membership. These will be assigned to the user when they login with Microsoft&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct401.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tenants ====&lt;br /&gt;
1. Choose which external roles from the App Roles lists (See [[Microsoft_login|List of App Roles]]) should be given to your client. &lt;br /&gt;
&lt;br /&gt;
E.g. one of your products requires some kind of agent. So you tell them:&lt;br /&gt;
&lt;br /&gt;
Please map &amp;quot;Agent type 1&amp;quot; to the group of people you want to do &amp;quot;&amp;amp;lt;agent like role&amp;amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2. Send your client instructions about the login page and the list of roles they need to configure groups for.&lt;br /&gt;
&lt;br /&gt;
3. Once the Admin has logged in once and registered the Tenant, you can find the Tenant in the list of Tenants under their email domain name.&lt;br /&gt;
&lt;br /&gt;
You can access Tenants list from the menu on your Catglobe site: ADMINISTRATION -&amp;gt; SINGLE-SIGN-ON -&amp;gt; Tenants&lt;br /&gt;
&lt;br /&gt;
[[File:Tenant1.png]]&lt;br /&gt;
&lt;br /&gt;
Or via the URL: yourCatglobeSite/Sso/Admin/Tenants&lt;br /&gt;
&lt;br /&gt;
4. Edit the Tenant to map the App roles to the desired list of AppProduct roles&lt;br /&gt;
&lt;br /&gt;
Select the Tenant on the Tenants list, then click the Edit button&lt;br /&gt;
&lt;br /&gt;
At the Role mapping step, map each role from the list you provided to the client, by selecting the corresponding key from the dropdown and clicking Add mapping &lt;br /&gt;
&lt;br /&gt;
[[File:Tenant201_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Then Click on “Add new role” to select corresponding roles from “AppProducts”&lt;br /&gt;
&lt;br /&gt;
[[File:Tenant203.png]]&lt;br /&gt;
&lt;br /&gt;
5. Their users can now click the &#039;Login with Microsoft&#039; button on the login page and will get the roles they have assigned to them.&lt;br /&gt;
&lt;br /&gt;
[[File:mslogin.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tenant203.png&amp;diff=241018</id>
		<title>File:Tenant203.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tenant203.png&amp;diff=241018"/>
		<updated>2025-07-28T10:42:11Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:AppProduct401.png&amp;diff=241017</id>
		<title>File:AppProduct401.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:AppProduct401.png&amp;diff=241017"/>
		<updated>2025-07-28T10:40:19Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Microsoft_login_Customer_Admin&amp;diff=241016</id>
		<title>Microsoft login Customer Admin</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Microsoft_login_Customer_Admin&amp;diff=241016"/>
		<updated>2025-07-28T10:27:33Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Guides]]&lt;br /&gt;
Documentation for Customer admins: &lt;br /&gt;
&lt;br /&gt;
= Configure your Entra to login to Catglobe =&lt;br /&gt;
&lt;br /&gt;
Congratulations, instead of having to deal with usernames and password on your Catglobe based application you can now use Microsoft Entra login to access.&lt;br /&gt;
&lt;br /&gt;
== Information you need ==&lt;br /&gt;
&lt;br /&gt;
Your Catglobe contact should have given you:&lt;br /&gt;
&lt;br /&gt;
1. The url to the Catglobe powered application.&lt;br /&gt;
&lt;br /&gt;
2. A list of roles you need to give to your users&lt;br /&gt;
&lt;br /&gt;
==== Configuration steps ====&lt;br /&gt;
&lt;br /&gt;
1. Open the Url and click &amp;quot;Login with Microsoft&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:mslogin.png]]&lt;br /&gt;
&lt;br /&gt;
2. You should see a page informing you that your Tenant is new. Complete the registration process by clicking &amp;quot;Register&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:regisTenant.png]]&lt;br /&gt;
&lt;br /&gt;
3. If it says your tenant is already pending approval, someone else already did step 2.&lt;br /&gt;
&lt;br /&gt;
4. The Catglobe application now appears in your list of Enterprise applications in your tenant configuration.&lt;br /&gt;
&lt;br /&gt;
[[File:customeradmin102.png]]&lt;br /&gt;
&lt;br /&gt;
5. Add groups as you desire and assign them a Catglobe App role as instructed.&lt;br /&gt;
&lt;br /&gt;
[[File:customeradmin202.png]]&lt;br /&gt;
&lt;br /&gt;
6. Add users to your groups.&lt;br /&gt;
&lt;br /&gt;
7. Your users can now click the &#039;Login with Microsoft&#039; button on the login page and will get the roles you have assigned to them.&lt;br /&gt;
&lt;br /&gt;
[[File:mslogin.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Microsoft_login_Catglobe_Admin&amp;diff=241015</id>
		<title>Microsoft login Catglobe Admin</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Microsoft_login_Catglobe_Admin&amp;diff=241015"/>
		<updated>2025-07-28T10:19:07Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Guides]]&lt;br /&gt;
Documentation for Catglobe site admins:&lt;br /&gt;
&lt;br /&gt;
= Setting up Sso =&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
You need to contact Catglobe support to enable your site for Entra login.&lt;br /&gt;
&lt;br /&gt;
== Configuration steps ==&lt;br /&gt;
&lt;br /&gt;
==== AppProducts ====&lt;br /&gt;
&lt;br /&gt;
1. Setup AppProducts in your Catglobe site&lt;br /&gt;
&lt;br /&gt;
You can access the AppProducts list from the menu on your Catglobe site: ADMINISTRATION -&amp;gt; SINGLE-SIGN-ON -&amp;gt; AppProducts&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct1.png]]&lt;br /&gt;
&lt;br /&gt;
Or via the url: yourCatglobeSite/Sso/Admin/AppProducts&lt;br /&gt;
&lt;br /&gt;
Here you can see a create button, click on the button and follow the setup for your AppProduct&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct2.png]]&lt;br /&gt;
&lt;br /&gt;
2. Add Roles in your AppProduct&lt;br /&gt;
&lt;br /&gt;
At Roles step, you can see an Add Role button, click on the button to start setup roles&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct3.png]]&lt;br /&gt;
&lt;br /&gt;
3. Add group membership for each role&lt;br /&gt;
&lt;br /&gt;
While adding a role, you need to select a resource template and group membership. These will be assigned to the user when they login with Microsoft&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct44.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tenants ====&lt;br /&gt;
1. Choose which external roles from the App Roles lists (See [[Microsoft_login|List of App Roles]]) should be given to your client. &lt;br /&gt;
&lt;br /&gt;
E.g. one of your products requires some kind of agent. So you tell them:&lt;br /&gt;
&lt;br /&gt;
Please map &amp;quot;Agent type 1&amp;quot; to the group of people you want to do &amp;quot;&amp;amp;lt;agent like role&amp;amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2. Send your client instructions about the login page and the list of roles they need to configure groups for.&lt;br /&gt;
&lt;br /&gt;
3. Once the Admin has logged in once and registered the Tenant, you can find the Tenant in the list of Tenants under their email domain name.&lt;br /&gt;
&lt;br /&gt;
You can access Tenants list from the menu on your Catglobe site: ADMINISTRATION -&amp;gt; SINGLE-SIGN-ON -&amp;gt; Tenants&lt;br /&gt;
&lt;br /&gt;
[[File:Tenant1.png]]&lt;br /&gt;
&lt;br /&gt;
Or via the URL: yourCatglobeSite/Sso/Admin/Tenants&lt;br /&gt;
&lt;br /&gt;
4. Edit the Tenant to map the App roles to the desired list of AppProduct roles&lt;br /&gt;
&lt;br /&gt;
Select the Tenant on the Tenants list, then click the Edit button&lt;br /&gt;
&lt;br /&gt;
At the Role mapping step, map each role from the list you provided to the client, by selecting the corresponding key from the dropdown and clicking Add mapping &lt;br /&gt;
&lt;br /&gt;
[[File:Tenant201_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Then Click on “Add new role” to select corresponding roles from “AppProducts”&lt;br /&gt;
&lt;br /&gt;
[[File:Tenant202.png]]&lt;br /&gt;
&lt;br /&gt;
5. Their users can now click the &#039;Login with Microsoft&#039; button on the login page and will get the roles they have assigned to them.&lt;br /&gt;
&lt;br /&gt;
[[File:mslogin.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Microsoft_login_Catglobe_Admin&amp;diff=241014</id>
		<title>Microsoft login Catglobe Admin</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Microsoft_login_Catglobe_Admin&amp;diff=241014"/>
		<updated>2025-07-28T10:18:13Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Guides]]&lt;br /&gt;
Documentation for Catglobe site admins:&lt;br /&gt;
&lt;br /&gt;
= Setting up Sso =&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
You need to contact Catglobe support to enable your site for Entra login.&lt;br /&gt;
&lt;br /&gt;
== Configuration steps ==&lt;br /&gt;
&lt;br /&gt;
==== AppProducts ====&lt;br /&gt;
&lt;br /&gt;
1. Setup AppProducts in your Catglobe site&lt;br /&gt;
&lt;br /&gt;
You can access AppProducts from the menu on your Catglobe site: ADMINISTRATION -&amp;gt; SINGLE-SIGN-ON -&amp;gt; AppProducts&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct1.png]]&lt;br /&gt;
&lt;br /&gt;
Or via the url: yourCatglobeSite/Sso/Admin/AppProducts&lt;br /&gt;
&lt;br /&gt;
Here you can see a create button, click on the button and follow the setup for your AppProduct&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct2.png]]&lt;br /&gt;
&lt;br /&gt;
2. Add Roles in your AppProduct&lt;br /&gt;
&lt;br /&gt;
At Roles step, you can see an Add Role button, click on the button to start setup roles&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct3.png]]&lt;br /&gt;
&lt;br /&gt;
3. Add group membership for each role&lt;br /&gt;
&lt;br /&gt;
While adding a role, you need to select a resource template and group membership. These will be assigned to the user when they login with Microsoft&lt;br /&gt;
&lt;br /&gt;
[[File:AppProduct44.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Tenants ====&lt;br /&gt;
1. Choose which external roles from the App Roles lists (See [[Microsoft_login|List of App Roles]]) should be given to your client. &lt;br /&gt;
&lt;br /&gt;
E.g. one of your products requires some kind of agent. So you tell them:&lt;br /&gt;
&lt;br /&gt;
Please map &amp;quot;Agent type 1&amp;quot; to the group of people you want to do &amp;quot;&amp;amp;lt;agent like role&amp;amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2. Send your client instructions about the login page and the list of roles they need to configure groups for.&lt;br /&gt;
&lt;br /&gt;
3. Once the Admin has logged in once and registered the Tenant, you can find the Tenant in the list of Tenants under their email domain name.&lt;br /&gt;
&lt;br /&gt;
You can access Tenants list from the menu on your Catglobe site: ADMINISTRATION -&amp;gt; SINGLE-SIGN-ON -&amp;gt; Tenants&lt;br /&gt;
&lt;br /&gt;
[[File:Tenant1.png]]&lt;br /&gt;
&lt;br /&gt;
Or via the URL: yourCatglobeSite/Sso/Admin/Tenants&lt;br /&gt;
&lt;br /&gt;
4. Edit the Tenant to map the App roles to the desired list of AppProduct roles&lt;br /&gt;
&lt;br /&gt;
Select the Tenant on the Tenants list, then click the Edit button&lt;br /&gt;
&lt;br /&gt;
At the Role mapping step, map each role from the list you provided to the client, by selecting the corresponding key from the dropdown and clicking Add mapping &lt;br /&gt;
&lt;br /&gt;
[[File:Tenant201_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Then Click on “Add new role” to select corresponding roles from “AppProducts”&lt;br /&gt;
&lt;br /&gt;
[[File:Tenant202.png]]&lt;br /&gt;
&lt;br /&gt;
5. Their users can now click the &#039;Login with Microsoft&#039; button on the login page and will get the roles they have assigned to them.&lt;br /&gt;
&lt;br /&gt;
[[File:mslogin.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tenant201_2.jpg&amp;diff=241013</id>
		<title>File:Tenant201 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tenant201_2.jpg&amp;diff=241013"/>
		<updated>2025-07-28T10:16:21Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tenant201_1.jpg&amp;diff=241012</id>
		<title>File:Tenant201 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tenant201_1.jpg&amp;diff=241012"/>
		<updated>2025-07-28T10:10:28Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tenant202.png&amp;diff=241011</id>
		<title>File:Tenant202.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tenant202.png&amp;diff=241011"/>
		<updated>2025-07-28T09:49:42Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tenant201.png&amp;diff=241010</id>
		<title>File:Tenant201.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tenant201.png&amp;diff=241010"/>
		<updated>2025-07-28T09:49:32Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tenant22.png&amp;diff=241009</id>
		<title>File:Tenant22.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tenant22.png&amp;diff=241009"/>
		<updated>2025-07-28T09:49:20Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tenant2.png&amp;diff=241008</id>
		<title>File:Tenant2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tenant2.png&amp;diff=241008"/>
		<updated>2025-07-28T09:49:11Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Tenant1.png&amp;diff=241007</id>
		<title>File:Tenant1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Tenant1.png&amp;diff=241007"/>
		<updated>2025-07-28T09:49:02Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:RegisTenant.png&amp;diff=241006</id>
		<title>File:RegisTenant.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:RegisTenant.png&amp;diff=241006"/>
		<updated>2025-07-28T09:48:49Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Mslogin.png&amp;diff=241005</id>
		<title>File:Mslogin.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Mslogin.png&amp;diff=241005"/>
		<updated>2025-07-28T09:48:39Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Customeradmin202.png&amp;diff=241004</id>
		<title>File:Customeradmin202.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Customeradmin202.png&amp;diff=241004"/>
		<updated>2025-07-28T09:48:29Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Customeradmin201.png&amp;diff=241003</id>
		<title>File:Customeradmin201.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Customeradmin201.png&amp;diff=241003"/>
		<updated>2025-07-28T09:48:14Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Customeradmin102.png&amp;diff=241002</id>
		<title>File:Customeradmin102.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Customeradmin102.png&amp;diff=241002"/>
		<updated>2025-07-28T09:47:51Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:Customeradmin101.png&amp;diff=241001</id>
		<title>File:Customeradmin101.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:Customeradmin101.png&amp;diff=241001"/>
		<updated>2025-07-28T09:47:37Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:AppProduct44.png&amp;diff=241000</id>
		<title>File:AppProduct44.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:AppProduct44.png&amp;diff=241000"/>
		<updated>2025-07-28T09:47:24Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:AppProduct3.png&amp;diff=240999</id>
		<title>File:AppProduct3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:AppProduct3.png&amp;diff=240999"/>
		<updated>2025-07-28T09:47:10Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:AppProduct2.png&amp;diff=240998</id>
		<title>File:AppProduct2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:AppProduct2.png&amp;diff=240998"/>
		<updated>2025-07-28T09:46:34Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=File:AppProduct1.png&amp;diff=240997</id>
		<title>File:AppProduct1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=File:AppProduct1.png&amp;diff=240997"/>
		<updated>2025-07-28T09:46:02Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Script_on_Cati_call&amp;diff=240986</id>
		<title>Script on Cati call</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Script_on_Cati_call&amp;diff=240986"/>
		<updated>2025-06-26T09:45:57Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CATI_module]]&lt;br /&gt;
= Script on Cati call =&lt;br /&gt;
Add the ability to call a script after each time a number has been dialed, also set via the cati settings. This will allow us better control of when to do various stuff, and also allow custom logic for some cases... e.g. in the rerecruitment we can say that when it reach the maxdial status, then we opt people out of panel. Or we can send SMS to people with answering machines that we will call them back.&lt;br /&gt;
It should be noticed that the calling of this script is on the critical path, and must therefore be severely restricted in the amount of work done, ie in the case of sending SMS, the only thing the script should do is add respondent to a group and another script scheduled to run e,g. every 30 min takes care of the actual sending of SMS.&lt;br /&gt;
&lt;br /&gt;
The script gets the following parameters:&lt;br /&gt;
&lt;br /&gt;
1. The current cati contact in same format as returned from [[CATI_getCATIContacts]]&lt;br /&gt;
&lt;br /&gt;
2. Times called&lt;br /&gt;
&lt;br /&gt;
The current user context is set to the user of the qas, and the qas context is the dialed qas.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
Define &amp;quot;Script to execute after call&amp;quot; at CATI setting on Fieldwork management:&lt;br /&gt;
&lt;br /&gt;
[[File:2018-05-23_15-25-57.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script on Workflow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Example script to add/remove the user to/from a group &lt;br /&gt;
array a = Workflow_getParameters();&lt;br /&gt;
array currentCatiContact = a[0];//same format as returned from CATI_getCATIContacts&lt;br /&gt;
number timesCalled = a[1];&lt;br /&gt;
//QAS qas = QAS_getCurrentQAS();//The qas context is the dialed qas&lt;br /&gt;
User user = User_getQasUser();//The current user context is set to the user of the qas&lt;br /&gt;
number maxCallLimit = 5;//your limit&lt;br /&gt;
if(timesCalled &amp;gt;= maxCallLimit){&lt;br /&gt;
    Group_addUser(user.ResourceId, groupAdd) ;//yourGroup&lt;br /&gt;
	Group_removeUser(user.ResourceId, groupRemove) ;//yourGroup&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2018-05-23_15-39-30.png]]&lt;br /&gt;
&lt;br /&gt;
Please note that if the code has an error, it will not be thrown; Cati will continue to call normally.&lt;br /&gt;
If you want to catch errors, you should use a try-catch block and send the error back to yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
object e;&lt;br /&gt;
try{&lt;br /&gt;
	//do something&lt;br /&gt;
}catch(e){&lt;br /&gt;
	sendEmail(&amp;quot;yourEmail&amp;quot;,&amp;quot;Alias&amp;quot;,&amp;quot;Subject&amp;quot;,e.Message,&amp;quot;fromEmail&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Script_on_Cati_call&amp;diff=240985</id>
		<title>Script on Cati call</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Script_on_Cati_call&amp;diff=240985"/>
		<updated>2025-06-26T09:43:12Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CATI_module]]&lt;br /&gt;
= Script on Cati call =&lt;br /&gt;
Add the ability to call a script after each time a number has been dialed, also set via the cati settings. This will allow us better control of when to do various stuff, and also allow custom logic for some cases... e.g. in the rerecruitment we can say that when it reach the maxdial status, then we opt people out of panel. Or we can send SMS to people with answering machines that we will call them back.&lt;br /&gt;
It should be noticed that the calling of this script is on the critical path, and must therefore be severely restricted in the amount of work done, ie in the case of sending SMS, the only thing the script should do is add respondent to a group and another script scheduled to run e,g. every 30 min takes care of the actual sending of SMS.&lt;br /&gt;
&lt;br /&gt;
The script gets the following parameters:&lt;br /&gt;
&lt;br /&gt;
1. The current cati contact in same format as returned from [[CATI_getCATIContacts]]&lt;br /&gt;
&lt;br /&gt;
2. Times called&lt;br /&gt;
&lt;br /&gt;
The current user context is set to the user of the qas, and the qas context is the dialed qas.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
Define &amp;quot;Script to execute after call&amp;quot; at CATI setting on Fieldwork management:&lt;br /&gt;
&lt;br /&gt;
[[File:2018-05-23_15-25-57.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script on Workflow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Example script to set disable user who reach max call and remove the user from a group &lt;br /&gt;
array a = Workflow_getParameters();&lt;br /&gt;
array currentCatiContact = a[0];//same format as returned from CATI_getCATIContacts&lt;br /&gt;
number timesCalled = a[1];&lt;br /&gt;
//QAS qas = QAS_getCurrentQAS();//The qas context is the dialed qas&lt;br /&gt;
User user = User_getQasUser();//The current user context is set to the user of the qas&lt;br /&gt;
number maxCallLimit = 5;//your limit&lt;br /&gt;
if(timesCalled &amp;gt;= maxCallLimit){&lt;br /&gt;
	Group_removeUser(user.ResourceId, groupRemove) ;//yourGroup&lt;br /&gt;
	//Group_addUser(user.ResourceId, groupAdd) ;//yourGroup&lt;br /&gt;
	user.Disabled = true;&lt;br /&gt;
	user.Save();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2018-05-23_15-39-30.png]]&lt;br /&gt;
&lt;br /&gt;
Please note that if the code has an error, it will not be thrown; Cati will continue to call normally.&lt;br /&gt;
If you want to catch errors, you should use a try-catch block and send the error back to yourself.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
object e;&lt;br /&gt;
try{&lt;br /&gt;
	//do something&lt;br /&gt;
}catch(e){&lt;br /&gt;
	sendEmail(&amp;quot;yourEmail&amp;quot;,&amp;quot;Alias&amp;quot;,&amp;quot;Subject&amp;quot;,e.Message,&amp;quot;fromEmail&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Script_on_Cati_call&amp;diff=240984</id>
		<title>Script on Cati call</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Script_on_Cati_call&amp;diff=240984"/>
		<updated>2025-06-26T09:25:34Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CATI_module]]&lt;br /&gt;
= Script on Cati call =&lt;br /&gt;
Add the ability to call a script after each time a number has been dialed, also set via the cati settings. This will allow us better control of when to do various stuff, and also allow custom logic for some cases... e.g. in the rerecruitment we can say that when it reach the maxdial status, then we opt people out of panel. Or we can send SMS to people with answering machines that we will call them back.&lt;br /&gt;
It should be noticed that the calling of this script is on the critical path, and must therefore be severely restricted in the amount of work done, ie in the case of sending SMS, the only thing the script should do is add respondent to a group and another script scheduled to run e,g. every 30 min takes care of the actual sending of SMS.&lt;br /&gt;
&lt;br /&gt;
The script gets the following parameters:&lt;br /&gt;
&lt;br /&gt;
1. The current cati contact in same format as returned from [[CATI_getCATIContacts]]&lt;br /&gt;
&lt;br /&gt;
2. Times called&lt;br /&gt;
&lt;br /&gt;
The current user context is set to the user of the qas, and the qas context is the dialed qas.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
Define &amp;quot;Script to execute after call&amp;quot; at CATI setting on Fieldwork management:&lt;br /&gt;
&lt;br /&gt;
[[File:2018-05-23_15-25-57.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script on Workflow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Example script to set disable user who reach max call and remove the user from a group &lt;br /&gt;
array a = Workflow_getParameters();&lt;br /&gt;
array currentCatiContact = a[0];//same format as returned from CATI_getCATIContacts&lt;br /&gt;
number timesCalled = a[1];&lt;br /&gt;
//QAS qas = QAS_getCurrentQAS();//The qas context is the dialed qas&lt;br /&gt;
User user = User_getQasUser();//The current user context is set to the user of the qas&lt;br /&gt;
number maxCallLimit = 5;//your limit&lt;br /&gt;
if(timesCalled &amp;gt;= maxCallLimit){&lt;br /&gt;
	Group_removeUser(user.ResourceId, groupRemove) ;//yourGroup&lt;br /&gt;
	//Group_addUser(user.ResourceId, groupAdd) ;//yourGroup&lt;br /&gt;
	user.Disabled = true;&lt;br /&gt;
	user.Save();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2018-05-23_15-39-30.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Script_on_Cati_call&amp;diff=240983</id>
		<title>Script on Cati call</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Script_on_Cati_call&amp;diff=240983"/>
		<updated>2025-06-26T09:14:57Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CATI_module]]&lt;br /&gt;
= Script on Cati call =&lt;br /&gt;
Add the ability to call a script after each time a number has been dialed, also set via the cati settings. This will allow us better control of when to do various stuff, and also allow custom logic for some cases... e.g. in the rerecruitment we can say that when it reach the maxdial status, then we opt people out of panel. Or we can send SMS to people with answering machines that we will call them back.&lt;br /&gt;
It should be noticed that the calling of this script is on the critical path, and must therefore be severely restricted in the amount of work done, ie in the case of sending SMS, the only thing the script should do is add respondent to a group and another script scheduled to run e,g. every 30 min takes care of the actual sending of SMS.&lt;br /&gt;
&lt;br /&gt;
The script gets the following parameters:&lt;br /&gt;
&lt;br /&gt;
1. The current cati contact in same format as returned from [[CATI_getCATIContacts]]&lt;br /&gt;
&lt;br /&gt;
2. Times called&lt;br /&gt;
&lt;br /&gt;
The current user context is set to the user of the qas, and the qas context is the dialed qas.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
Define &amp;quot;Script to execute after call&amp;quot; at CATI setting on Fieldwork management:&lt;br /&gt;
&lt;br /&gt;
[[File:2018-05-23_15-25-57.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script on Workflow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Example script to set disable user who reach max call and remove the user from a group &lt;br /&gt;
array a = Workflow_getParameters();&lt;br /&gt;
array currentCatiContact = a[0];//same format as returned from CATI_getCATIContacts&lt;br /&gt;
number timesCalled = a[1];&lt;br /&gt;
//QAS qas = QAS_getCurrentQAS();//The qas context is the dialed qas&lt;br /&gt;
User user = User_getQasUser();//The current user context is set to the user of the qas&lt;br /&gt;
number maxCallLimit = 5;//your limit&lt;br /&gt;
if(timesCalled &amp;gt;= maxCallLimit){&lt;br /&gt;
	Group_removeUser(user.ResourceId, groupId) ;//yourGroup&lt;br /&gt;
	user.Disabled = true;&lt;br /&gt;
	user.Save();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2018-05-23_15-39-30.png]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=Make_oidc_work_with_respondents_auth_with_guid_only&amp;diff=240976</id>
		<title>Make oidc work with respondents auth with guid only</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=Make_oidc_work_with_respondents_auth_with_guid_only&amp;diff=240976"/>
		<updated>2025-04-22T06:56:38Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To automatically direct respondents to an external site (which is already authenticated by Catglobe) upon clicking the survey link, bypassing a login prompt, we can proceed as follows:&lt;br /&gt;
&lt;br /&gt;
Input the cgscript on gateway workflow or on the questionnaire dummy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Script for gateway&lt;br /&gt;
return oidc_site + &amp;quot;authentication/login?respondent=&amp;quot; + User_getQasUser().ResourceGuid + &amp;quot;&amp;amp;respondent_secret=&amp;quot; + QAS_getCurrentQAS().AccessCode;&lt;br /&gt;
//Script for dummy&lt;br /&gt;
sendToUrl(oidc_site + &amp;quot;authentication/login?respondent=&amp;quot; + User_getQasUser().ResourceGuid + &amp;quot;&amp;amp;respondent_secret=&amp;quot; + QAS_getCurrentQAS().AccessCode);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then send invitation mail to respondents. When a respondent clicks on survey link in mail, they&#039;ll be redirected to external site and automatically logged in. &lt;br /&gt;
&lt;br /&gt;
Here&#039;s the flow diagram, to shows how this works&lt;br /&gt;
&lt;br /&gt;
[[File:Oidc_authR.jpg]]&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
	<entry>
		<id>https://wiki.catglobe.com/index.php?title=ImportManager_class&amp;diff=240975</id>
		<title>ImportManager class</title>
		<link rel="alternate" type="text/html" href="https://wiki.catglobe.com/index.php?title=ImportManager_class&amp;diff=240975"/>
		<updated>2025-04-14T05:28:07Z</updated>

		<summary type="html">&lt;p&gt;Nguyenduyan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CGscriptClass_Template&lt;br /&gt;
|Name=&amp;lt;nowiki&amp;gt;ImportManager&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Import data and users.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|InheritsFrom=object|Constructors=&lt;br /&gt;
{{CGscriptConstructors_Template|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=array|Name=&amp;lt;nowiki&amp;gt;Headers&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;A list of string that are the header names&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=array|Name=&amp;lt;nowiki&amp;gt;data&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Data to import. An array of arrays of equal length as the headers&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;advancedMode&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Enable setting advanced settings - Requires special navigation access&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;groupResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Group to add users to new users to and/or sample rule. Set to 0 to not add to group&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Make a new import with the given data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Methods=&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;GetPossibleAutoMasForData&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Get default automaps. First value is column name, second is actual import field&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=array|Name=&amp;lt;nowiki&amp;gt;GetPossibleAutoMasForUser&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Get default automaps. First value is column name, second is actual import field&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;Import&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Run the Import. Note that this will commit any pending changes&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;SetDataImportOptions&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;projectQuestionnaireResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The resource Id of where the data should be added/updated&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;type&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;How to treat when already have existing answer sheets. 1 for Zero or One AnswerSheet, 2 for delete existing and create new, 3 for mapping to rpqIdColumnName&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;idColumnName&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Mapping for column name in case type is 3 or 4&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;isCommaSeparatedFormat&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import multi questions as comma separated format&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;mapping&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Mapping between header names and import names. If empty, automapping is used&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Set specific options for importing data or altering existing data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;SetDefaultNewUser&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;languageIso&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Default language&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;cultureIso&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Default culture&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;currency&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Default currency&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Defaults for new users. If empty or not set, uses the global defaults&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Empty|Name=&amp;lt;nowiki&amp;gt;SetUserImportOptions&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;userIdColumnName&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The header name of the userId column&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;userNameMask&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The mask used to create new usernames - an advanced setting&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;generatePasswords&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;OBSOLETE. Always false. Generate passwords during import&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importUserInfo&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update users&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importPhoneNumber&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update phonenumbers&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importAddress&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update addresses&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importPoints&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update points&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importQualification&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update qualifications&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=array|Name=&amp;lt;nowiki&amp;gt;permissions&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Determine which groups should have access to the new users&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;mapping&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Mapping between header names and import names. If empty, automapping is used&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;OBSOLETE. Use the new overload with parentResourceId.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=Dictionary|Name=&amp;lt;nowiki&amp;gt;SetUserImportOptions&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;userIdColumnName&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The header name of the userId column&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=string|Name=&amp;lt;nowiki&amp;gt;userNameMask&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;The mask used to create new usernames - an advanced setting&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;generatePasswords&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;OBSOLETE. Always false. Generate passwords during import&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importUserInfo&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update users&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importPhoneNumber&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update phonenumbers&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importAddress&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update addresses&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importPoints&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update points&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;importQualification&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Import or Update qualifications&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=int|Name=&amp;lt;nowiki&amp;gt;parentResourceId&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Resource Id of the parent of the new users. Ignored if updating users&amp;lt;/nowiki&amp;gt;|Comma=,}}{{CGscriptParameters_Template|Type=Dictionary|Name=&amp;lt;nowiki&amp;gt;mapping&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Mapping between header names and import names. If empty, automapping is used&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Set specific options for importing new users or altering existing users&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ToString&amp;lt;/nowiki&amp;gt;|Inherited=object|Description=&amp;lt;nowiki&amp;gt;The string representation of the object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Validate&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Same as Validate(true)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptMethods_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Validate&amp;lt;/nowiki&amp;gt;|Parameters=&lt;br /&gt;
{{CGscriptParameters_Template|Type=bool|Name=&amp;lt;nowiki&amp;gt;errorOnSemiOpenQuestion&amp;lt;/nowiki&amp;gt;|Description=&amp;lt;nowiki&amp;gt;Set to false if you need to import to questions with open parts and know that it may partially delete existing data&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Description=&amp;lt;nowiki&amp;gt;Validate prior to actual importing. Throws if errors, otherwise returns warning.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Properties=&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Culture&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the culture used during import in case we don&#039;t want to use the logged-in-user&#039;s one (UseLoggedInUsersCultureDuringImport = false)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;Language&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set the language used when importing text&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=string|Name=&amp;lt;nowiki&amp;gt;ObjectTypeName&amp;lt;/nowiki&amp;gt;|HasGetter=1|Description=&amp;lt;nowiki&amp;gt;The name of the type of object.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=&amp;lt;nowiki&amp;gt;TypeInformation&amp;lt;/nowiki&amp;gt;|HasGetter=1|Inherited=object|Description=&amp;lt;nowiki&amp;gt;Get information about this class.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{CGscriptProperties_Template|ReturnType=bool|Name=&amp;lt;nowiki&amp;gt;UseLoggedInUsersCultureDuringImport&amp;lt;/nowiki&amp;gt;|HasGetter=1|HasSetter=1|Description=&amp;lt;nowiki&amp;gt;Get/set if the culture used during import is the same as the logged in user or invariant culture. Default is invariant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:#DF8621&amp;quot;&amp;gt;&#039;&#039;&#039;Examples&#039;&#039;&#039;&amp;lt;/span&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// EX for making import qnaire data without user (acreate new qas with no user)&lt;br /&gt;
array Headers={&amp;quot;Q2&amp;quot;,&amp;quot;Q4&amp;quot;,&amp;quot;Q5&amp;quot;,&amp;quot;TextValue&amp;quot;,&amp;quot;NumberValue&amp;quot;};&lt;br /&gt;
array Data={{1,&amp;quot;q4&amp;quot;,1,&amp;quot;Text1&amp;quot;,1}};&lt;br /&gt;
Bool advancedMode=false;&lt;br /&gt;
number groupResourceId =0;&lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId);&lt;br /&gt;
number qnaireRId = 15546533;&lt;br /&gt;
number type=1;&lt;br /&gt;
string rpqIdColumnName=&amp;quot;&amp;quot;;&lt;br /&gt;
bool isCommaSeparatedFormat = true;&lt;br /&gt;
Dictionary mapping = new Dictionary();&lt;br /&gt;
iM.SetDataImportOptions(qnaireRId,type,rpqIdColumnName,isCommaSeparatedFormat,mapping);&lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//EX for import data to an existing answer sheet&lt;br /&gt;
array Headers={&amp;quot;RPQId&amp;quot;,&amp;quot;Q2&amp;quot;,&amp;quot;Q4&amp;quot;,&amp;quot;Q5&amp;quot;,&amp;quot;TextValue&amp;quot;,&amp;quot;NumberValue&amp;quot;};&lt;br /&gt;
array Data={{1742872963,1,&amp;quot;q4&amp;quot;,1,&amp;quot;Text1&amp;quot;,1}};&lt;br /&gt;
Bool advancedMode=false;&lt;br /&gt;
number groupResourceId =0;&lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId);&lt;br /&gt;
number qnaireRId = 15546533;&lt;br /&gt;
number type=3;&lt;br /&gt;
string rpqIdColumnName=&amp;quot;RPQId&amp;quot;;&lt;br /&gt;
bool isCommaSeparatedFormat = true;&lt;br /&gt;
Dictionary mapping = new Dictionary();&lt;br /&gt;
iM.SetDataImportOptions(qnaireRId,type,rpqIdColumnName,isCommaSeparatedFormat,mapping);&lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//EX for import new user info and phone number&lt;br /&gt;
array Headers={&amp;quot;First name&amp;quot;,&amp;quot;Last name&amp;quot;,&amp;quot;User_Email&amp;quot;,&amp;quot;Language&amp;quot;,&amp;quot;Culture&amp;quot;,&amp;quot;PhoneType_NotIdentified&amp;quot;,&amp;quot;User_CountryCode&amp;quot;};&lt;br /&gt;
array Data={{&amp;quot;TestFirstName&amp;quot;,&amp;quot;TestLastName&amp;quot;,&amp;quot;so@testmail.com&amp;quot;,&amp;quot;da-DK&amp;quot;,&amp;quot;da-DK&amp;quot;,&amp;quot;12345678&amp;quot;,&amp;quot;dk&amp;quot;}};&lt;br /&gt;
Bool advancedMode=false;&lt;br /&gt;
number groupResourceId =15548117;&lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId);&lt;br /&gt;
string userIdColumnName=&amp;quot;&amp;quot;;&lt;br /&gt;
string userNameMask=&amp;quot;&amp;quot;;&lt;br /&gt;
bool generatePasswords=true; &lt;br /&gt;
bool importUserInfo = true;&lt;br /&gt;
bool importPhoneNumber = true;&lt;br /&gt;
bool importAddress=false;&lt;br /&gt;
bool importPoints =false;&lt;br /&gt;
bool importQualification=false;&lt;br /&gt;
number parentResourceId= 15546533;&lt;br /&gt;
Dictionary mapping = new Dictionary();&lt;br /&gt;
iM.SetUserImportOptions(userIdColumnName,userNameMask,generatePasswords,importUserInfo,importPhoneNumber,importAddress,importPoints,importQualification,parentResourceId,mapping);&lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//EX for importing new user and new qas&lt;br /&gt;
array Headers={&amp;quot;First name&amp;quot;,&amp;quot;Last name&amp;quot;,&amp;quot;User_Email&amp;quot;,&amp;quot;Language&amp;quot;,&amp;quot;Culture&amp;quot;,&amp;quot;PhoneType_NotIdentified&amp;quot;,&amp;quot;User_CountryCode&amp;quot;,&amp;quot;Q2&amp;quot;,&amp;quot;Q4&amp;quot;,&amp;quot;Q5&amp;quot;,&amp;quot;TextValue&amp;quot;,&amp;quot;NumberValue&amp;quot;};&lt;br /&gt;
array Data={{&amp;quot;TestFirstName&amp;quot;,&amp;quot;TestLastName&amp;quot;,&amp;quot;so@testmail.com&amp;quot;,&amp;quot;da-DK&amp;quot;,&amp;quot;da-DK&amp;quot;,&amp;quot;12345678&amp;quot;,&amp;quot;dk&amp;quot;,1,&amp;quot;q4&amp;quot;,1,&amp;quot;Text1&amp;quot;,1}};&lt;br /&gt;
Bool advancedMode=false;&lt;br /&gt;
number groupResourceId =15548117; &lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId); &lt;br /&gt;
string userIdColumnName=&amp;quot;&amp;quot;;&lt;br /&gt;
string userNameMask=&amp;quot;&amp;quot;;&lt;br /&gt;
bool generatePasswords=true; &lt;br /&gt;
bool importUserInfo = true;&lt;br /&gt;
bool importPhoneNumber = true;&lt;br /&gt;
bool importAddress=false;&lt;br /&gt;
bool importPoints =false;&lt;br /&gt;
bool importQualification=false;&lt;br /&gt;
number parentResourceId= 15546533;&lt;br /&gt;
Dictionary mapping = new Dictionary(); &lt;br /&gt;
iM.SetUserImportOptions(userIdColumnName,userNameMask,generatePasswords,importUserInfo,importPhoneNumber,importAddress,importPoints,importQualification,parentResourceId,mapping);&lt;br /&gt;
number qnaireRId = 15546533;&lt;br /&gt;
number type=1;&lt;br /&gt;
string rpqIdColumnName=&amp;quot;&amp;quot;;&lt;br /&gt;
bool isCommaSeparatedFormat = true;&lt;br /&gt;
//Dictionary mapping = new Dictionary();&lt;br /&gt;
iM.SetDataImportOptions(qnaireRId,type,rpqIdColumnName,isCommaSeparatedFormat,mapping); &lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Using SetDefaultNewUser&lt;br /&gt;
array Headers={&amp;quot;First name&amp;quot;,&amp;quot;Last name&amp;quot;,&amp;quot;User_Email&amp;quot;};&lt;br /&gt;
array Data={{&amp;quot;TestFirstName&amp;quot;,&amp;quot;TestLastName&amp;quot;,&amp;quot;so@testmail.com&amp;quot;}};&lt;br /&gt;
Bool advancedMode=false;&lt;br /&gt;
number groupResourceId =15548117; &lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId); &lt;br /&gt;
string userIdColumnName=&amp;quot;&amp;quot;;&lt;br /&gt;
string userNameMask=&amp;quot;&amp;quot;;&lt;br /&gt;
bool generatePasswords=true; &lt;br /&gt;
bool importUserInfo = true;&lt;br /&gt;
bool importPhoneNumber = true;&lt;br /&gt;
bool importAddress=false;&lt;br /&gt;
bool importPoints =false;&lt;br /&gt;
bool importQualification=false;&lt;br /&gt;
number parentResourceId= 15546533;&lt;br /&gt;
Dictionary mapping = new Dictionary(); &lt;br /&gt;
iM.SetUserImportOptions(userIdColumnName,userNameMask,generatePasswords,importUserInfo,importPhoneNumber,importAddress,importPoints,importQualification,parentResourceId,mapping);&lt;br /&gt;
string languageIso=&amp;quot;da-DK&amp;quot;;&lt;br /&gt;
string cultureIso=&amp;quot;da-DK&amp;quot;;&lt;br /&gt;
string currency=&amp;quot;USD&amp;quot;;&lt;br /&gt;
iM.SetDefaultNewUser(languageIso, cultureIso,currency ); &lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Update an existing user&lt;br /&gt;
array Headers={&amp;quot;userId&amp;quot;,&amp;quot;Language&amp;quot;,&amp;quot;Culture&amp;quot;,&amp;quot;Currency&amp;quot;};&lt;br /&gt;
array Data={{&amp;quot;90414076&amp;quot;,&amp;quot;da-DK&amp;quot;,&amp;quot;da-DK&amp;quot;,&amp;quot;USD&amp;quot;}};&lt;br /&gt;
Bool advancedMode=false;&lt;br /&gt;
number groupResourceId =15548117;&lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId); &lt;br /&gt;
string userIdColumnName=&amp;quot;userId&amp;quot;;&lt;br /&gt;
string userNameMask=&amp;quot;&amp;quot;;&lt;br /&gt;
bool generatePasswords=true; &lt;br /&gt;
bool importUserInfo = true;&lt;br /&gt;
bool importPhoneNumber = true;&lt;br /&gt;
bool importAddress=false;&lt;br /&gt;
bool importPoints =false;&lt;br /&gt;
bool importQualification=false;&lt;br /&gt;
number parentResourceId= 15546533;&lt;br /&gt;
Dictionary mapping = new Dictionary();&lt;br /&gt;
iM.SetUserImportOptions(userIdColumnName,userNameMask,generatePasswords,importUserInfo,importPhoneNumber,importAddress,importPoints,importQualification,parentResourceId,mapping);&lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//update an existing qas by CustomerId (using SetDataImportOptions with type 4)&lt;br /&gt;
//CustomerID must be a text field, not numeric&lt;br /&gt;
array Headers={&amp;quot;CustomerID&amp;quot;,&amp;quot;Q1&amp;quot;,&amp;quot;Age&amp;quot;};&lt;br /&gt;
array Data={{&amp;quot;AB123&amp;quot;,2,1}};&lt;br /&gt;
Bool advancedMode=false;&lt;br /&gt;
number groupResourceId =0;&lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId);&lt;br /&gt;
number qnaireRId = 15562388;&lt;br /&gt;
number type=4;&lt;br /&gt;
string idColumnName=&amp;quot;CustomerID&amp;quot;;&lt;br /&gt;
bool isCommaSeparatedFormat = true;&lt;br /&gt;
Dictionary mapping = new Dictionary();&lt;br /&gt;
iM.SetDataImportOptions(qnaireRId,type,idColumnName,isCommaSeparatedFormat,mapping);&lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Set culture while import. If not set will use &amp;quot;.&amp;quot; format, example: &amp;quot;45.967&amp;quot;&lt;br /&gt;
//Set Culture work combine with UseLoggedInUsersCultureDuringImport=false&lt;br /&gt;
array Headers={&amp;quot;qNumber&amp;quot;};&lt;br /&gt;
array Data={{&amp;quot;45,967&amp;quot;}};&lt;br /&gt;
Bool advancedMode=false;&lt;br /&gt;
number groupResourceId =0;&lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId);&lt;br /&gt;
number qnaireRId = 15636598;&lt;br /&gt;
number type=1;&lt;br /&gt;
string rpqIdColumnName=&amp;quot;&amp;quot;;&lt;br /&gt;
bool isCommaSeparatedFormat = true;&lt;br /&gt;
Dictionary mapping = new Dictionary();&lt;br /&gt;
//iM.UseLoggedInUsersCultureDuringImport=false;&lt;br /&gt;
iM.Culture = &amp;quot;da-DK&amp;quot;;&lt;br /&gt;
iM.SetDataImportOptions(qnaireRId,type,rpqIdColumnName,isCommaSeparatedFormat,mapping);&lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//set language while import. If don&#039;t set, will use login user language&lt;br /&gt;
array Headers={&amp;quot;RPQ_StartDato&amp;quot;,&amp;quot;RPQ_SlutDato&amp;quot;,&amp;quot;RPQ_Status&amp;quot;, &amp;quot;Q1&amp;quot;};&lt;br /&gt;
array Data={{&amp;quot;2018-06-18 02:49:06&amp;quot;,&amp;quot;2018-06-18 02:51:44&amp;quot;,&amp;quot;Successfuldt interview&amp;quot;, &amp;quot;1&amp;quot;}};&lt;br /&gt;
Bool advancedMode=true;&lt;br /&gt;
number groupResourceId =0;&lt;br /&gt;
ImportManager iM = new ImportManager (Headers, Data, advancedMode, groupResourceId);&lt;br /&gt;
number qnaireRId = 15636646;&lt;br /&gt;
number type=1;&lt;br /&gt;
string rpqIdColumnName=&amp;quot;&amp;quot;;&lt;br /&gt;
bool isCommaSeparatedFormat = true;&lt;br /&gt;
Dictionary mapping = new Dictionary();&lt;br /&gt;
iM.Language = &amp;quot;da-DK&amp;quot;;&lt;br /&gt;
iM.SetDataImportOptions(qnaireRId,type,rpqIdColumnName,isCommaSeparatedFormat,mapping);&lt;br /&gt;
iM.Validate();&lt;br /&gt;
iM.Import();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nguyenduyan</name></author>
	</entry>
</feed>