diff --git a/backend/src/components/eas/eas.js b/backend/src/components/eas/eas.js
index 75c9d513..bd3b49c8 100644
--- a/backend/src/components/eas/eas.js
+++ b/backend/src/components/eas/eas.js
@@ -21,10 +21,15 @@ async function getAssessmentSessions(req, res) {
async function getAssessmentSessionsBySchoolYear(req, res) {
try {
const url = `${config.get('server:eas:assessmentSessionsURL')}/school-year/${req.params.schoolYear}`;
- const data = await getData(url);
+ let data = await getData(url);
+ data.forEach(session => {
+ session.assessments.forEach(assessment => {
+ assessment.assessmentTypeName = cacheService.getAssessmentTypeLabelByCode(assessment.assessmentTypeCode)+' ('+assessment.assessmentTypeCode+')';
+ });
+ });
return res.status(200).json(data);
} catch (e) {
- logApiError(e, 'getSessions', 'Error occurred while attempting to GET sessions.');
+ logApiError(e, 'getSessions', 'Error occurred while attempting to GET sessions by school year.');
return handleExceptionResponse(e, res);
}
}
@@ -71,29 +76,29 @@ async function getAssessmentStudentsPaginated(req, res) {
}
};
-
let data = await getData(`${config.get('server:eas:assessmentStudentsURL')}/paginated`, params);
if (req?.query?.returnKey) {
let result = data?.content.map((student) => student[req?.query?.returnKey]);
return res.status(HttpStatus.OK).json(result);
}
-
data?.content.forEach(value => {
let school = cacheService.getSchoolBySchoolID(value.schoolID);
- let assessmentCenter = cacheService.getSchoolBySchoolID(value.assessmentCenter);
+ let assessmentCenter = cacheService.getSchoolBySchoolID(value.assessmentCenterID);
let district = cacheService.getDistrictJSONByDistrictId(school.districtID);
+
value.schoolNumber = school.mincode;
value.schoolName = getSchoolName(school);
- value.districtName = getDistrictName(district);
- value.districtNumber = district.districtNumber;
value.districtID = school.districtID;
- value.mincode = cacheService.getSchoolBySchoolID(value.schoolID)?.mincode;
+ value.districtNumber = district.districtNumber;
+ value.districtName = getDistrictName(district);
value.assessmentCenterNumber = assessmentCenter.mincode;
value.assessmentCenterName = getSchoolName(assessmentCenter);
+
value.assessmentTypeName = cacheService.getAssessmentTypeLabelByCode(value.assessmentTypeCode)+' ('+value.assessmentTypeCode+')';
value.provincialSpecialCaseName = cacheService.getSpecialCaseTypeLabelByCode(value.provincialSpecialCaseCode);
value.sessionName = moment(value.courseMonth, 'MM').format('MMMM') +' '+value.courseYear;
+
});
return res.status(200).json(data);
} catch (e) {
diff --git a/backend/src/components/eas/studentFilters.js b/backend/src/components/eas/studentFilters.js
index 863e7325..7d583a82 100644
--- a/backend/src/components/eas/studentFilters.js
+++ b/backend/src/components/eas/studentFilters.js
@@ -1,23 +1,105 @@
'use strict';
const { FILTER_OPERATION, VALUE_TYPE, CONDITION} = require('../../util/constants');
-
function createMoreFiltersSearchCriteria(searchFilter = []) {
let searchCriteriaList = [];
+
+ let districtNameNumberFilter = [];
+ let schoolNameNumberFilter = [];
+ let assessmentCenterNameNumberFilter = [];
+ let scoreRangeList = [];
+
for (const [key, filter] of Object.entries(searchFilter)) {
let pValue = filter ? filter.map(filter => filter.value) : null;
- if (key === 'specialCaseCode' && pValue) {
- searchCriteriaList.push({ key: 'provincialSpecialCaseCode', value: pValue.toString(), operation: FILTER_OPERATION.IN, valueType: VALUE_TYPE.STRING, condition: CONDITION.AND });
+
+ //Default Filter Begin
+ if (key === 'schoolYear' && pValue) {
+ searchCriteriaList.push({ key: 'assessmentEntity.sessionEntity.schoolYear', value: pValue[0].replace('-', '/'), operation: FILTER_OPERATION.EQUAL, valueType: VALUE_TYPE.STRING, condition: CONDITION.AND });
}
+
if (key === 'sessionID' && pValue) {
searchCriteriaList.push({ key: 'assessmentEntity.sessionEntity.sessionID', value: pValue[0], operation: FILTER_OPERATION.IN, valueType: VALUE_TYPE.UUID, condition: CONDITION.AND });
}
- if (key === 'schoolYear' && pValue) {
- searchCriteriaList.push({ key: 'assessmentEntity.sessionEntity.schoolYear', value: pValue[0].replace('-', '/'), operation: FILTER_OPERATION.EQUAL, valueType: VALUE_TYPE.STRING, condition: CONDITION.AND });
+ //Default Filter End
+
+ if (key === 'surName' && pValue) {
+ searchCriteriaList.push({ key: 'surName', value: pValue.toString(), operation: FILTER_OPERATION.CONTAINS_IGNORE_CASE, valueType: VALUE_TYPE.STRING, condition: CONDITION.AND });
+ }
+
+ if (key === 'pen' && pValue) {
+ searchCriteriaList.push({ key: 'pen', value: pValue.toString(), operation: FILTER_OPERATION.EQUAL, valueType: VALUE_TYPE.STRING, condition: CONDITION.AND });
+ }
+
+ if (key === 'localID' && pValue) {
+ searchCriteriaList.push({ key: 'localID', value: pValue.toString(), operation: FILTER_OPERATION.EQUAL, valueType: VALUE_TYPE.STRING, condition: CONDITION.AND });
+ }
+
+ if (key === 'districtNameNumber' && pValue) {
+ let districtNameNumberCriteria = createDistrictNameNumberSearchCriteria(pValue.toString());
+ districtNameNumberFilter = [...districtNameNumberCriteria];
+ }
+
+ if (key === 'schoolNameNumber' && pValue) {
+ let schoolNameNumberCriteria = createSchoolNameNumberSearchCriteria(pValue.toString());
+ schoolNameNumberFilter = [...schoolNameNumberCriteria];
+ }
+
+ if (key === 'assessmentCenterNameNumber' && pValue) {
+ let schoolNameNumberCriteria = createAssessmentCenterNameNumberSearchCriteria(pValue.toString());
+ assessmentCenterNameNumberFilter = [...schoolNameNumberCriteria];
+ }
+
+ if (key === 'sessions' && pValue) {
+ searchCriteriaList.push({ key: 'assessmentEntity.sessionEntity.sessionID', value: pValue.toString(), operation: FILTER_OPERATION.IN, valueType: VALUE_TYPE.UUID, condition: CONDITION.AND });
+ }
+
+ if (key === 'assessmentTypeCode' && pValue) {
+ searchCriteriaList.push({ key: 'assessmentEntity.assessmentTypeCode', value: pValue.toString(), operation: FILTER_OPERATION.IN, valueType: VALUE_TYPE.STRING, condition: CONDITION.AND });
+ }
+
+ if (key === 'specialCaseCode' && pValue) {
+ searchCriteriaList.push({ key: 'provincialSpecialCaseCode', value: pValue.toString(), operation: FILTER_OPERATION.IN, valueType: VALUE_TYPE.STRING, condition: CONDITION.AND });
+ }
+
+ if (key === 'proficienyScore' && pValue) {
+ if(JSON.parse(pValue) === true) {
+ searchCriteriaList.push({ key: 'proficiencyScore', value: 0, operation: FILTER_OPERATION.GREATER_THAN, valueType: VALUE_TYPE.INTEGER, condition: CONDITION.AND });
+ } else {
+ searchCriteriaList.push({ key: 'proficiencyScore', value:0, operation: FILTER_OPERATION.LESS_THAN_OR_EQUAL_TO, valueType: VALUE_TYPE.INTEGER, condition: CONDITION.AND });
+ }
+ }
+
+ if (key === 'proficienyScoreRange' && pValue) {
+ scoreRangeList = createScoreRangeFilter(pValue);
}
+
+ }
+ const search = [];
+ if (districtNameNumberFilter.length > 0) {
+ search.push({
+ condition: CONDITION.AND,
+ searchCriteriaList: districtNameNumberFilter
+ });
+ }
+ if (schoolNameNumberFilter.length > 0) {
+ search.push({
+ condition: CONDITION.AND,
+ searchCriteriaList: schoolNameNumberFilter
+ });
+ }
+ if (assessmentCenterNameNumberFilter.length > 0) {
+ search.push({
+ condition: CONDITION.AND,
+ searchCriteriaList: assessmentCenterNameNumberFilter
+ });
+ }
+ if(scoreRangeList.length > 0) {
+ search.push({
+ condition: CONDITION.AND,
+ searchCriteriaList: scoreRangeList
+ });
}
- const search = [];
if (searchCriteriaList.length > 0) {
search.push({
condition: CONDITION.AND,
@@ -27,6 +109,59 @@ function createMoreFiltersSearchCriteria(searchFilter = []) {
return search;
}
+function createDistrictNameNumberSearchCriteria(value) {
+ const searchDistrictCriteriaList = [];
+
+ searchDistrictCriteriaList.push({
+ key: 'districtID',
+ operation: FILTER_OPERATION.EQUAL,
+ value: value,
+ valueType: VALUE_TYPE.UUID,
+ condition: CONDITION.AND
+ });
+
+ return searchDistrictCriteriaList;
+}
+
+function createSchoolNameNumberSearchCriteria(value) {
+ const searchSchoolCriteriaList = [];
+
+ searchSchoolCriteriaList.push({
+ key: 'schoolID',
+ operation: FILTER_OPERATION.EQUAL,
+ value: value,
+ valueType: VALUE_TYPE.UUID,
+ condition: CONDITION.AND
+ });
+
+ return searchSchoolCriteriaList;
+}
+
+function createAssessmentCenterNameNumberSearchCriteria(value) {
+ const searchAssessmentCenterCriteriaList = [];
+
+ searchAssessmentCenterCriteriaList.push({
+ key: 'assessmentCenterID',
+ operation: FILTER_OPERATION.EQUAL,
+ value: value,
+ valueType: VALUE_TYPE.UUID,
+ condition: CONDITION.AND
+ });
+
+ return searchAssessmentCenterCriteriaList;
+}
+
+function createScoreRangeFilter(pValue) {
+ let scoreRangeList = [];
+
+ scoreRangeList.push({key:'proficiencyScore', value: pValue[0][1], operation: FILTER_OPERATION.LESS_THAN_OR_EQUAL_TO, valueType: VALUE_TYPE.INTEGER, condition: CONDITION.AND});
+ scoreRangeList.push({key:'proficiencyScore', value: pValue[0][0], operation: FILTER_OPERATION.GREATER_THAN_OR_EQUAL_TO, valueType: VALUE_TYPE.INTEGER, condition: CONDITION.AND});
+ if(pValue[0][0] === '0'){
+ scoreRangeList.push({key:'proficiencyScore', value: null, operation: FILTER_OPERATION.EQUAL, valueType: VALUE_TYPE.STRING, condition: CONDITION.OR});
+ }
+ return scoreRangeList;
+}
+
module.exports = {
createMoreFiltersSearchCriteria
};
diff --git a/frontend/src/components/assessments/AssessmentSessions.vue b/frontend/src/components/assessments/AssessmentSessions.vue
index b5fc801e..7779ae2c 100644
--- a/frontend/src/components/assessments/AssessmentSessions.vue
+++ b/frontend/src/components/assessments/AssessmentSessions.vue
@@ -5,21 +5,21 @@
School Year: {{ schoolYear }}
- Continue
-
-
+ variant="text"
+ @click="goToSchoolYearRegistrations()"
+ >
+ View all Open Sessions in the current school year
+
+
@@ -58,11 +58,11 @@
{ value: 25, title: '25' },
{ value: 50, title: '50' },
{ value: 100, title: '100' },
- { value: -1, title: 'All' }
]"
:hover="true"
class="fill-height"
style="border-radius: 0"
+ @click:row="goToSessionRegistrations"
>
index < this.topN)
+ .filter((session, index) => index < this.topN)
.map((session) => {
return {
...session,
courseMonth: this.formatMonth(session.courseMonth)
};
- });
- allsessions.sort((a, b) => new Date(a.activeUntilDate) - new Date(b.activeUntilDate));
- this.schoolYear = allsessions[0]?.schoolYear;
+ });
+ allsessions.sort((a, b) => new Date(a.activeUntilDate) - new Date(b.activeUntilDate));
for (let i = 0; i < allsessions.length; i += 2) {
orderedSessions.push(allsessions.slice(i, i + 2));
}
@@ -151,20 +148,19 @@ export default {
historicalSessions() {
const allsessions = this.allsessions
.filter((session, index) => index >= this.topN)
- .map((session) => {
+ .map((entry) => {
return {
- ...session,
- activeFromDate: this.formattoDate(session.activeFromDate),
- activeUntilDate: this.formattoDate(session.activeUntilDate),
- courseMonth: this.formatMonth(session.courseMonth),
+ ...entry,
+ activeFromDate: this.formattoDate(entry.activeFromDate),
+ activeUntilDate: this.formattoDate(entry.activeUntilDate),
+ courseMonth: this.formatMonth(entry.courseMonth),
};
});
- allsessions.sort((a, b) => new Date(b.activeUntilDate) - new Date(a.activeUntilDate));
- return allsessions;
+ return allsessions;
},
sessionHeaderSlotName() {
return `column.${this.sessionid}`;
- },
+ }
},
created() {
this.getAllAssessmentSessions();
@@ -175,7 +171,10 @@ export default {
ApiService.apiAxios
.get(`${Routes.eas.GET_ASSESSMENT_SESSIONS}`, {})
.then((response) => {
- this.allsessions = response.data;
+ this.allsessions = response.data.sort((a, b) => new Date(b.activeUntilDate) - new Date(a.activeUntilDate));
+ if(this.allsessions.length >0) {
+ this.schoolYear = this.allsessions[0].schoolYear;
+ }
})
.catch((error) => {
console.error(error);
@@ -183,7 +182,7 @@ export default {
.finally(() => {
this.loading = false;
});
- },
+ },
sessionEditSuccess() {
this.getAllAssessmentSessions();
},
@@ -198,7 +197,10 @@ export default {
return moment(month, 'MM').format('MMMM');
},
goToSchoolYearRegistrations() {
- this.$router.push({name: 'assessment-session-detail', params: {schoolYear: this.schoolYear.replace(/\//g, '-'), sessionID: null}});
+ this.$router.push({name: 'assessment-session-detail', params: {schoolYear: this.schoolYear?.replace(/\//g, '-'), sessionID: null}});
+ },
+ goToSessionRegistrations(e, { item }) {
+ this.$router.push({name: 'assessment-session-detail', params: {schoolYear: item?.raw?.schoolYear?.replace(/\//g, '-'), sessionID: item?.raw?.sessionID}});
}
},
};
diff --git a/frontend/src/components/assessments/AssessmentSessionsDetail.vue b/frontend/src/components/assessments/AssessmentSessionsDetail.vue
index 43faeb7d..65b11495 100644
--- a/frontend/src/components/assessments/AssessmentSessionsDetail.vue
+++ b/frontend/src/components/assessments/AssessmentSessionsDetail.vue
@@ -1,23 +1,19 @@
-
+
-
- {{ formatMonth(this.activeSession?.courseMonth) }}
- {{ activeSession?.courseYear }} Session
-
-
+ School Year {{ schoolYear.replace('-','/') }}
+
-
+
- School Year {{ schoolYear }}
+ {{ formatMonth(this.activeSession?.courseMonth) }} {{ activeSession?.courseYear }}
mdi-arrow-left
- Return to Assessment Sessions
+ Return to Assessment Sessions
@@ -38,29 +34,12 @@
Reports
-
-
-
-
-
-
+
+
+
+
@@ -102,11 +81,12 @@ export default {
};
},
computed: {},
- created() {
+ created() {
+ this.loading = true;
this.getAllSessionsforYear();
},
methods: {
- getAllSessionsforYear() {
+ async getAllSessionsforYear() {
this.loading = true;
ApiService.apiAxios
.get(
@@ -117,9 +97,9 @@ export default {
.then((response) => {
this.schoolYearSessions = response.data;
if (this.sessionID) {
- this.activeSession = this.schoolYearSessions.filter(
+ this.activeSession = this.schoolYearSessions.find(
(session) => session.sessionID === this.sessionID
- )[0];
+ );
}
})
.catch((error) => {
diff --git a/frontend/src/components/assessments/registrations/StudentRegistrations.vue b/frontend/src/components/assessments/registrations/StudentRegistrations.vue
index 550b95aa..0a0d3b8a 100644
--- a/frontend/src/components/assessments/registrations/StudentRegistrations.vue
+++ b/frontend/src/components/assessments/registrations/StudentRegistrations.vue
@@ -33,7 +33,7 @@
import StudentRegistrationsCustomTable from './StudentRegistrationsCustomTable.vue';
-import { REGISTRATIONS } from '@/utils/eas/StudentRegistrationTableConfiguration.js';
+import { SCHOOL_YEAR_REGISTRATIONS_VIEW, SESSION_REGISTRATIONS_VIEW } from '@/utils/eas/StudentRegistrationTableConfiguration.js';
import ApiService from '@/common/apiService';
import { Routes } from '@/utils/constants';
import { cloneDeep, isEmpty, omitBy } from 'lodash';
@@ -95,18 +96,17 @@ export default {
schoolYearSessions: {
type: Object,
required: true,
- },
+ }
},
emits: [],
data() {
return {
- config: REGISTRATIONS,
+ config: this.sessionID ? SESSION_REGISTRATIONS_VIEW : SCHOOL_YEAR_REGISTRATIONS_VIEW ,
assessmentStudents: [],
filterSearchParams: {
moreFilters: {},
},
showFilters: null,
- reloadRegistratinsFlag: false,
isLoading: false,
totalElements: 0,
pageNumber: 1,
@@ -118,11 +118,7 @@ export default {
},
computed: {
filterCount() {
- return (
- Object.values(this.filterSearchParams.moreFilters)
- .filter((filter) => !!filter)
- .reduce((total, filter) => total.concat(filter), []).length - 1
- );
+ return Object.values(this.filterSearchParams.moreFilters).filter(filter => !!filter ).reduce((total, filter) => total.concat(filter), []).length;
},
},
created() {
@@ -134,12 +130,13 @@ export default {
let sort = {
assessmentStudentID: 'ASC',
};
+ let assessmentSearchParams = cloneDeep(this.filterSearchParams);
if (this.sessionID) {
- this.filterSearchParams.moreFilters.sessionID = [
+ assessmentSearchParams.moreFilters.sessionID = [
{ title: 'sessionID', id: 'sessionID', value: this.sessionID },
];
} else {
- this.filterSearchParams.moreFilters.schoolYear = [
+ assessmentSearchParams.moreFilters.schoolYear = [
{ title: 'schoolYear', id: 'schoolYear', value: this.schoolYear },
];
}
@@ -148,7 +145,7 @@ export default {
params: {
pageNumber: this.pageNumber - 1,
pageSize: this.pageSize,
- searchParams: omitBy(this.filterSearchParams, isEmpty),
+ searchParams: omitBy(assessmentSearchParams, isEmpty),
sort: sort,
},
})
diff --git a/frontend/src/components/assessments/registrations/StudentRegistrationsFilter.vue b/frontend/src/components/assessments/registrations/StudentRegistrationsFilter.vue
index e5c250d0..a5720e6c 100644
--- a/frontend/src/components/assessments/registrations/StudentRegistrationsFilter.vue
+++ b/frontend/src/components/assessments/registrations/StudentRegistrationsFilter.vue
@@ -29,7 +29,7 @@
@click-action="clear"
/>
-
+
-
+
Name and ID
@@ -97,7 +97,7 @@
- School and District
+ District, School and Assessment Center
@@ -110,8 +110,12 @@
color="primary"
variant="underlined"
/>
-
-
+
+
+
+
+
+
-
+
-
-
+
+
+ {{ option?.title }}
+
+
+
+
+
- {{ option?.title }}
-
+
+ {{ option?.title }}
+
+
+
+
+
+ {{ option?.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ option?.title }}
+
+
+
@@ -211,12 +307,12 @@
@@ -418,7 +549,7 @@ export default {
height: auto !important;
}
-#courses-slider {
+#score-slider {
margin: 0 8px 8px 8px;
}
@@ -426,5 +557,6 @@ export default {
width: 5em;
font-size: 0.875rem;
border-color: #003366;
+ text-align: center;
}
diff --git a/frontend/src/utils/eas/StudentRegistrationTableConfiguration.js b/frontend/src/utils/eas/StudentRegistrationTableConfiguration.js
index ee879511..a1357d25 100644
--- a/frontend/src/utils/eas/StudentRegistrationTableConfiguration.js
+++ b/frontend/src/utils/eas/StudentRegistrationTableConfiguration.js
@@ -3,6 +3,17 @@
*/
+export const SESSION_CODE_FILTER = Object.freeze(
+ {
+ heading: 'Session',
+ id: 'sessionTypeCode',
+ multiple: true,
+ key: 'sessionTypeCode',
+ filterOptions: [
+ ]
+ }
+);
+
export const ASSESSMENT_TYPE_CODE_FILTER = Object.freeze(
{
heading: 'Assessment / Course',
@@ -61,9 +72,9 @@ export const PROFICIENCY_SCORE_FILTER = Object.freeze(
}
);
-export const REGISTRATIONS = Object.freeze(
+export const SCHOOL_YEAR_REGISTRATIONS_VIEW = Object.freeze(
{
- schoolTableHeaders: [
+ tableHeaders: [
{ title: 'Session', key: 'sessionName'},
{ title: 'District', key: 'districtName' },
{ title: 'School', key: 'schoolName' },
@@ -73,9 +84,20 @@ export const REGISTRATIONS = Object.freeze(
{ title: 'Surname', key: 'surName' },
{ title: 'Course Name (Code)', key: 'assessmentTypeName' },
{ title: 'Special Case', key: 'provincialSpecialCaseName' },
- { title: 'Proficiency Score', key: 'finalPercentage' },
+ { title: 'Proficiency Score', key: 'proficiencyScore' },
],
- sessionTableHeaders: [
+ allowedFilters: {
+ sessions: SESSION_CODE_FILTER,
+ assessmentTypeCode: ASSESSMENT_TYPE_CODE_FILTER,
+ specialCaseCode: SPECIAL_CASE_FILTER,
+ proficienyScore: PROFICIENCY_SCORE_FILTER
+ }
+ });
+
+
+export const SESSION_REGISTRATIONS_VIEW = Object.freeze(
+ {
+ tableHeaders: [
{ title: 'District', key: 'districtName' },
{ title: 'School', key: 'schoolName' },
{ title: 'Assessment Center', key: 'assessmentCenterName' },
@@ -84,7 +106,7 @@ export const REGISTRATIONS = Object.freeze(
{ title: 'Surname', key: 'surName' },
{ title: 'Course Name (Code)', key: 'assessmentTypeName' },
{ title: 'Special Case', key: 'provincialSpecialCaseName' },
- { title: 'Proficiency Score', key: 'finalPercentage' },
+ { title: 'Proficiency Score', key: 'proficiencyScore' },
],
allowedFilters: {
assessmentTypeCode: ASSESSMENT_TYPE_CODE_FILTER,
@@ -92,4 +114,4 @@ export const REGISTRATIONS = Object.freeze(
proficienyScore: PROFICIENCY_SCORE_FILTER
}
});
-
\ No newline at end of file
+
diff --git a/tools/config/update-configmap.sh b/tools/config/update-configmap.sh
index 58e2e5e7..ff108019 100644
--- a/tools/config/update-configmap.sh
+++ b/tools/config/update-configmap.sh
@@ -703,22 +703,25 @@ if [ "$envValue" = "dev" ]; then
bannerColor="#8d28d7"
SCHEDULER_CRON_DOC_TYPE_MIGRATION="0 0 0 * * *"
disableSdcFunctionality=false
+ DISABLE_EAS_FUNCTIONALITY=false
elif [ "$envValue" = "test" ]; then
bannerEnvironment="TEST"
bannerColor="#58fe01"
SCHEDULER_CRON_DOC_TYPE_MIGRATION="0 0 0 * * *"
disableSdcFunctionality=false
+ DISABLE_EAS_FUNCTIONALITY=false
else
SCHEDULER_CRON_DOC_TYPE_MIGRATION="0 0 0 17 9 *"
disableSdcFunctionality=true
EDUC_EDX_FRONTEND="https://educationdataexchange.gov.bc.ca"
+ DISABLE_EAS_FUNCTIONALITY=true
fi
BANNER_ENVIRONMENT="$bannerEnvironment"
BANNER_COLOR="$bannerColor"
WEB_SOCKET_URL="wss://$SERVER_FRONTEND/api/socket"
IS_RATE_LIMIT_ENABLED=true
-DISABLE_EAS_FUNCTIONALITY=true
+
RATE_LIMIT_WINDOW_IN_SEC="60"
RATE_LIMIT_LIMIT="1000"