From 8092cd6bbb744b3263c29d65fc0b5035b7558037 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:31:25 +0530 Subject: [PATCH 01/13] chore : remove student module --- src/Question/dto/question.dto.ts | 1 - src/adapters/hasura/attendance.adapter.ts | 1 - src/adapters/hasura/cohort.adapter.ts | 1 - src/adapters/hasura/fields.adapter.ts | 1 - src/adapters/hasura/worksheet.adapter.ts | 3 +- src/adapters/postgres/cohort-adapter.ts | 1 - src/adapters/studentservicelocator.ts | 9 - src/app.module.ts | 4 +- src/cohort/cohort.service.ts | 132 ++++++------ src/interfaces/entities/IStudent.ts | 22 -- src/student/dto/student-detail.dto.ts | 99 --------- src/student/dto/student-search.dto.ts | 28 --- src/student/dto/student.dto.ts | 218 -------------------- src/student/interfaces/student.interface.ts | 23 --- src/student/student.controller.spec.ts | 18 -- src/student/student.controller.ts | 95 --------- src/student/student.module.ts | 11 - src/student/studentadapter.ts | 14 -- 18 files changed, 62 insertions(+), 619 deletions(-) delete mode 100644 src/adapters/studentservicelocator.ts delete mode 100644 src/interfaces/entities/IStudent.ts delete mode 100644 src/student/dto/student-detail.dto.ts delete mode 100644 src/student/dto/student-search.dto.ts delete mode 100644 src/student/dto/student.dto.ts delete mode 100644 src/student/interfaces/student.interface.ts delete mode 100644 src/student/student.controller.spec.ts delete mode 100644 src/student/student.controller.ts delete mode 100644 src/student/student.module.ts delete mode 100644 src/student/studentadapter.ts diff --git a/src/Question/dto/question.dto.ts b/src/Question/dto/question.dto.ts index db9177a2..1a1c73ae 100644 --- a/src/Question/dto/question.dto.ts +++ b/src/Question/dto/question.dto.ts @@ -1,6 +1,5 @@ import { ApiProperty } from "@nestjs/swagger"; import { Exclude, Expose } from "class-transformer"; -import { StudentDto } from "src/student/dto/student.dto"; export class QuestionDto { @Expose() diff --git a/src/adapters/hasura/attendance.adapter.ts b/src/adapters/hasura/attendance.adapter.ts index af209ac6..a6a029c7 100644 --- a/src/adapters/hasura/attendance.adapter.ts +++ b/src/adapters/hasura/attendance.adapter.ts @@ -8,7 +8,6 @@ import moment from "moment"; import jwt_decode from "jwt-decode"; import { IServicelocator } from "../attendanceservicelocator"; import { UserDto } from "src/user/dto/user.dto"; -import { StudentDto } from "src/student/dto/student.dto"; import { ErrorResponse } from "src/error-response"; import { AttendanceDateDto } from "src/attendance/dto/attendance-date.dto"; export const ShikshaAttendanceToken = "ShikshaAttendance"; diff --git a/src/adapters/hasura/cohort.adapter.ts b/src/adapters/hasura/cohort.adapter.ts index dcc17a5a..ae1ba820 100644 --- a/src/adapters/hasura/cohort.adapter.ts +++ b/src/adapters/hasura/cohort.adapter.ts @@ -9,7 +9,6 @@ import { CohortDto } from "src/cohort/dto/cohort.dto"; import { CohortSearchDto } from "src/cohort/dto/cohort-search.dto"; import { IServicelocatorcohort } from "../cohortservicelocator"; import { UserDto } from "src/user/dto/user.dto"; -import { StudentDto } from "src/student/dto/student.dto"; import { FieldsService } from "./services/fields.service"; import { CohortCreateDto } from "src/cohort/dto/cohort-create.dto"; import { FieldValuesDto } from "src/fields/dto/field-values.dto"; diff --git a/src/adapters/hasura/fields.adapter.ts b/src/adapters/hasura/fields.adapter.ts index fe9b4979..7f1d7ff6 100644 --- a/src/adapters/hasura/fields.adapter.ts +++ b/src/adapters/hasura/fields.adapter.ts @@ -9,7 +9,6 @@ import { FieldValuesDto } from "src/fields/dto/field-values.dto"; import { FieldValuesSearchDto } from "src/fields/dto/field-values-search.dto"; import { IServicelocatorfields } from "../fieldsservicelocator"; import { UserDto } from "src/user/dto/user.dto"; -import { StudentDto } from "src/student/dto/student.dto"; export const HasuraFieldsToken = "HasuraFields"; import { FieldsService } from "./services/fields.service"; diff --git a/src/adapters/hasura/worksheet.adapter.ts b/src/adapters/hasura/worksheet.adapter.ts index 71757042..b04c678e 100644 --- a/src/adapters/hasura/worksheet.adapter.ts +++ b/src/adapters/hasura/worksheet.adapter.ts @@ -3,7 +3,6 @@ import { HttpService } from "@nestjs/axios"; import { SuccessResponse } from "src/success-response"; import { WorksheetDto } from "src/worksheet/dto/worksheet.dto"; import { WorksheetSearchDto } from "src/worksheet/dto/worksheet-search.dto"; -import { StudentDto } from "src/student/dto/student.dto"; import { ErrorResponse } from "src/error-response"; @Injectable() @@ -604,7 +603,7 @@ export class WorksheetService { createdBy: item?.osCreatedBy ? `${item.osCreatedBy}` : "", updatedBy: item?.osUpdatedBy ? `${item.osUpdatedBy}` : "", }; - return new StudentDto(studentMapping); + return studentMapping; }); return studentResponse; diff --git a/src/adapters/postgres/cohort-adapter.ts b/src/adapters/postgres/cohort-adapter.ts index 2dda40c5..046f1e58 100644 --- a/src/adapters/postgres/cohort-adapter.ts +++ b/src/adapters/postgres/cohort-adapter.ts @@ -7,7 +7,6 @@ import jwt_decode from "jwt-decode"; import { CohortDto } from "src/cohort/dto/cohort.dto"; import { CohortSearchDto } from "src/cohort/dto/cohort-search.dto"; import { UserDto } from "src/user/dto/user.dto"; -import { StudentDto } from "src/student/dto/student.dto"; import { CohortCreateDto } from "src/cohort/dto/cohort-create.dto"; import { FieldValuesDto } from "src/fields/dto/field-values.dto"; import { FieldValuesSearchDto } from "src/fields/dto/field-values-search.dto"; diff --git a/src/adapters/studentservicelocator.ts b/src/adapters/studentservicelocator.ts deleted file mode 100644 index 0912b59f..00000000 --- a/src/adapters/studentservicelocator.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { StudentSearchDto } from "src/student/dto/student-search.dto"; -import { StudentDto } from "src/student/dto/student.dto"; - -export interface IServicelocator { - getStudent(studentId: any, request: any); - createStudent(request: any, studentDto: StudentDto); - updateStudent(id: string, request: any, studentDto: StudentDto); - searchStudent(request: any, studentSearchDto: StudentSearchDto); -} diff --git a/src/app.module.ts b/src/app.module.ts index 1dea9bf7..639eaf01 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -3,9 +3,9 @@ import { ConfigModule } from "@nestjs/config"; import { AppController } from "./app.controller"; import { AppService } from "./app.service"; // import { MulterModule } from "@nestjs/platform-express/multer"; -/* // Below modules not in use for Shiksha 2.0 -import { StudentModule } from "./student/student.module"; + +/* import { SchoolModule } from "./school/school.module"; import { HolidayModule } from "./holiday/holiday.module"; import { ConfigurationModule } from "./configs/configuration.module"; diff --git a/src/cohort/cohort.service.ts b/src/cohort/cohort.service.ts index 717f67ad..9e4759cc 100644 --- a/src/cohort/cohort.service.ts +++ b/src/cohort/cohort.service.ts @@ -8,7 +8,6 @@ import jwt_decode from "jwt-decode"; import { CohortDto } from "src/cohort/dto/cohort.dto"; import { CohortSearchDto } from "src/cohort/dto/cohort-search.dto"; import { UserDto } from "src/user/dto/user.dto"; -import { StudentDto } from "src/student/dto/student.dto"; import { CohortCreateDto } from "src/cohort/dto/cohort-create.dto"; import { FieldValuesDto } from "src/fields/dto/field-values.dto"; import { FieldValuesSearchDto } from "src/fields/dto/field-values-search.dto"; @@ -20,7 +19,7 @@ import { FieldsService } from "../fields/fields.service"; import { response } from "express"; import APIResponse from "src/utils/response"; import { FieldValues } from "../fields/entities/fields-values.entity"; -import { v4 as uuidv4 } from 'uuid'; +import { v4 as uuidv4 } from "uuid"; import { CohortMembers } from "src/cohortMembers/entities/cohort-member.entity"; import { ErrorResponseTypeOrm } from "src/error-response-typeorm"; @@ -28,67 +27,52 @@ import { ErrorResponseTypeOrm } from "src/error-response-typeorm"; export class CohortService { private cohort: CohortInterface; - constructor( @InjectRepository(Cohort) private cohortRepository: Repository, @InjectRepository(CohortMembers) private cohortMembersRepository: Repository, - private fieldsService: FieldsService, - ) { } + private fieldsService: FieldsService + ) {} - public async getCohortsDetails(userData, - request: any, - response: any){ - let apiId = 'api.concept.getCohortDetails' + public async getCohortsDetails(userData, request: any, response: any) { + let apiId = "api.concept.getCohortDetails"; try { - if(userData.name==='user'){ - let findCohortId = await this.findCohortName(userData?.id); - let result = { - cohortData: [], - }; - for (let data of findCohortId) { - let cohortData = { - cohortId: data?.cohortId, - name:data.name, - parentId:data?.parentId, - customField:{} + if (userData.name === "user") { + let findCohortId = await this.findCohortName(userData?.id); + let result = { + cohortData: [], }; - const getDetails = await this.getCohortListDetails(data?.cohortId); - cohortData.customField=getDetails - result.cohortData.push(cohortData); - } - return response - .status(HttpStatus.OK) - .send( - APIResponse.success( - apiId, - result, - "OK" - ) - ); - }else{ + for (let data of findCohortId) { + let cohortData = { + cohortId: data?.cohortId, + name: data.name, + parentId: data?.parentId, + customField: {}, + }; + const getDetails = await this.getCohortListDetails(data?.cohortId); + cohortData.customField = getDetails; + result.cohortData.push(cohortData); + } + return response + .status(HttpStatus.OK) + .send(APIResponse.success(apiId, result, "OK")); + } else { let cohortName = await this.cohortRepository.findOne({ - where:{cohortId:userData?.id}, - select:['name','parentId'] - }) + where: { cohortId: userData?.id }, + select: ["name", "parentId"], + }); let cohortData = { cohortId: userData?.id, - name:cohortName?.name, - parentId:cohortName?.parentId, - customField:{} + name: cohortName?.name, + parentId: cohortName?.parentId, + customField: {}, }; const getDetails = await this.getCohortListDetails(userData?.id); - cohortData.customField=getDetails + cohortData.customField = getDetails; return response - .status(HttpStatus.OK) - .send( - APIResponse.success( - apiId, - cohortData, - "OK" - ) - ); + .status(HttpStatus.OK) + .send(APIResponse.success(apiId, cohortData, "OK")); } } catch (error) { return response @@ -125,9 +109,7 @@ export class CohortService { ) fv ON fv."itemId" = cm."cohortId" INNER JOIN public."Fields" f ON fv."fieldId" = f."fieldId" WHERE cm."cohortId" = $1;`; - let result = await this.cohortMembersRepository.query(query, [ - userId - ]); + let result = await this.cohortMembersRepository.query(query, [userId]); return result; } public async createCohort(request: any, cohortCreateDto: CohortCreateDto) { @@ -135,7 +117,11 @@ export class CohortService { const cohortData: any = {}; cohortCreateDto.cohortId = uuidv4(); Object.keys(cohortCreateDto).forEach((e) => { - if (cohortCreateDto[e] && cohortCreateDto[e] != "" && e != "fieldValues") { + if ( + cohortCreateDto[e] && + cohortCreateDto[e] != "" && + e != "fieldValues" + ) { if (Array.isArray(cohortCreateDto[e])) { cohortData[e] = JSON.stringify(cohortCreateDto[e]); } else { @@ -151,7 +137,6 @@ export class CohortService { if (field_value_array.length > 0) { let field_values = []; for (let i = 0; i < field_value_array.length; i++) { - let fieldValues = field_value_array[i].split(":"); let fieldValueDto: FieldValuesDto = { fieldValuesId: "", // Provide a value for fieldValuesId @@ -173,7 +158,6 @@ export class CohortService { message: "Ok.", data: response, }); - } catch (e) { return new ErrorResponseTypeOrm({ statusCode: HttpStatus.INTERNAL_SERVER_ERROR, @@ -191,7 +175,10 @@ export class CohortService { const cohortUpdateData: any = {}; Object.keys(cohortUpdateDto).forEach((e) => { - if (cohortUpdateDto[e] && cohortUpdateDto[e] != "" && e != "fieldValues" + if ( + cohortUpdateDto[e] && + cohortUpdateDto[e] != "" && + e != "fieldValues" ) { if (Array.isArray(cohortUpdateDto[e])) { cohortUpdateData[e] = JSON.stringify(cohortUpdateDto[e]); @@ -201,19 +188,23 @@ export class CohortService { } }); - const response = await this.cohortRepository.update(cohortId, cohortUpdateData); - + const response = await this.cohortRepository.update( + cohortId, + cohortUpdateData + ); let field_value_array = cohortUpdateDto.fieldValues.split("|"); if (field_value_array.length > 0) { let field_values = []; for (let i = 0; i < field_value_array.length; i++) { - let fieldValues = field_value_array[i].split(":"); let fieldId = fieldValues[0] ? fieldValues[0].trim() : ""; try { - const fieldVauesRowId = await this.fieldsService.searchFieldValueId(cohortId, fieldId) + const fieldVauesRowId = await this.fieldsService.searchFieldValueId( + cohortId, + fieldId + ); const rowid = fieldVauesRowId.fieldValuesId; let fieldValueDto: FieldValuesDto = { @@ -227,7 +218,7 @@ export class CohortService { updatedAt: new Date().toISOString(), }; await this.fieldsService.updateFieldValues(rowid, fieldValueDto); - }catch{ + } catch { let fieldValueDto: FieldValuesDto = { fieldValuesId: null, value: fieldValues[1] ? fieldValues[1].trim() : "", @@ -248,7 +239,7 @@ export class CohortService { message: "Ok.", data: { rowCount: response.affected, - } + }, }); } catch (e) { return new ErrorResponseTypeOrm({ @@ -261,10 +252,9 @@ export class CohortService { public async searchCohort( tenantId: string, request: any, - cohortSearchDto: CohortSearchDto, + cohortSearchDto: CohortSearchDto ) { try { - let { limit, page, filters } = cohortSearchDto; let offset = 0; @@ -272,8 +262,8 @@ export class CohortService { offset = parseInt(limit) * (page - 1); } - if (limit.trim() === '') { - limit = '0'; + if (limit.trim() === "") { + limit = "0"; } const whereClause = {}; @@ -292,11 +282,10 @@ export class CohortService { return new SuccessResponse({ statusCode: HttpStatus.OK, - message: 'Ok.', + message: "Ok.", totalCount, data: mappedResponse, }); - } catch (e) { return new ErrorResponseTypeOrm({ statusCode: HttpStatus.INTERNAL_SERVER_ERROR, @@ -324,14 +313,11 @@ export class CohortService { metadata: item?.metadata ? `${item.metadata}` : "", }; return new CohortDto(cohortMapping); - }) + }); return cohortValueResponse; - } - public async updateCohortStatus( - cohortId: string - ) { + public async updateCohortStatus(cohortId: string) { try { let query = `UPDATE public."Cohort" SET "status" = false diff --git a/src/interfaces/entities/IStudent.ts b/src/interfaces/entities/IStudent.ts deleted file mode 100644 index 8cd815e1..00000000 --- a/src/interfaces/entities/IStudent.ts +++ /dev/null @@ -1,22 +0,0 @@ -interface IStudent { - studentId: string; - refId: string; - aadhaar: string; - firstName: string; - lastName: string; - schoolId: string; - currentClassId: string; - gender: string; - socialCategory: string; - iscwsn: string; - religion: string; - singleGirl: string; - weight: string; - height: string; - bloodGroup: string; - birthDate: string; - homeless: string; - bpl: string; - migrant: string; - status: string; -} diff --git a/src/student/dto/student-detail.dto.ts b/src/student/dto/student-detail.dto.ts deleted file mode 100644 index 36c63184..00000000 --- a/src/student/dto/student-detail.dto.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; -import { Exclude, Expose } from "class-transformer"; - -export class StudentDetailDto { - @Expose() - studentId: string; - - @Expose() - refId: string; - - @Expose() - aadhaar: string; - - @Expose() - firstName: string; - - @Expose() - lastName: string; - - @Expose() - schoolId: string; - - @Expose() - currentClassId: string; - - @Expose() - gender: string; - - @Expose() - socialCategory: string; - - @Expose() - iscwsn: string; - - @Expose() - religion: string; - - @Expose() - singleGirl: string; - - @Expose() - weight: string; - - @Expose() - height: string; - - @Expose() - bloodGroup: string; - - @Expose() - birthDate: string; - - @Expose() - homeless: string; - - @Expose() - bpl: string; - - @Expose() - migrant: string; - - @Expose() - status: string; - - @Expose() - email: string; - - @Expose() - fullName: string; - - @Expose() - fatherName: string; - - @Expose() - phoneNumber: string; - - @Expose() - admissionNo: string; - - @Expose() - address: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - @Expose() - createdBy: string; - - @Expose() - updatedBy: string; - - constructor(obj: object = {}) { - Object.keys(obj).forEach((key) => (obj[key] === "" ? delete obj[key] : {})); - Object.assign(this, obj); - } -} diff --git a/src/student/dto/student-search.dto.ts b/src/student/dto/student-search.dto.ts deleted file mode 100644 index baaf8675..00000000 --- a/src/student/dto/student-search.dto.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Exclude, Expose } from "class-transformer"; -import { - MaxLength, - IsNotEmpty, - IsEmail, - IsString, - IsNumber, -} from "class-validator"; -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class StudentSearchDto { - @ApiProperty({ - type: String, - description: "Limit", - }) - limit: string; - - @ApiProperty({ - type: Object, - description: "Filters", - }) - @ApiPropertyOptional() - filters: object; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/student/dto/student.dto.ts b/src/student/dto/student.dto.ts deleted file mode 100644 index 3fb5f953..00000000 --- a/src/student/dto/student.dto.ts +++ /dev/null @@ -1,218 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; -import { Exclude, Expose } from "class-transformer"; - -export class StudentDto { - @Expose() - studentId: string; - - @ApiProperty() - @Expose() - refId1: string; - - @ApiProperty() - @Expose() - refId2: string; - - @ApiPropertyOptional() - @Expose() - aadhaar: string; - - @ApiProperty() - @Expose() - firstName: string; - - @ApiProperty() - @Expose() - middleName: string; - - @ApiProperty() - @Expose() - lastName: string; - - @ApiProperty() - @Expose() - schoolId: string; - - @ApiProperty() - @Expose() - studentPhoneNumber: Number; - - @ApiPropertyOptional() - @Expose() - studentEmail: string; - - @ApiProperty() - @Expose() - gender: string; - - @ApiProperty() - @Expose() - groupId: string; - - @ApiPropertyOptional() - @Expose() - socialCategory: string; - - @ApiPropertyOptional() - @Expose() - iscwsn: string; - - @ApiPropertyOptional() - @Expose() - religion: string; - - @ApiPropertyOptional() - @Expose() - singleGirl: Boolean; - - @ApiPropertyOptional() - @Expose() - weight: string; - - @ApiPropertyOptional() - @Expose() - height: string; - - @ApiPropertyOptional() - @Expose() - bloodGroup: string; - - @ApiProperty() - @Expose() - birthDate: string; - - @ApiPropertyOptional() - @Expose() - homeless: Boolean; - - @ApiProperty() - @Expose() - bpl: Boolean; - - @ApiProperty() - @Expose() - migrant: Boolean; - - @ApiProperty() - @Expose() - status: string; - - @ApiPropertyOptional() - @Expose() - fatherFirstName: string; - - @ApiPropertyOptional() - @Expose() - fatherMiddleName: string; - - @ApiPropertyOptional() - @Expose() - fatherLastName: string; - - @ApiPropertyOptional() - @Expose() - fatherPhoneNumber: Number; - - @ApiPropertyOptional() - @Expose() - fatherEmail: string; - - @ApiPropertyOptional() - @Expose() - motherFirstName: string; - - @ApiPropertyOptional() - @Expose() - motherMiddleName: string; - - @ApiPropertyOptional() - @Expose() - motherLastName: string; - - @ApiPropertyOptional() - @Expose() - motherPhoneNumber: Number; - - @ApiPropertyOptional() - @Expose() - motherEmail: string; - - @ApiPropertyOptional() - @Expose() - guardianFirstName: string; - - @ApiPropertyOptional() - @Expose() - guardianMiddleName: string; - - @ApiPropertyOptional() - @Expose() - guardianLastName: string; - - @ApiPropertyOptional() - @Expose() - guardianPhoneNumber: Number; - - @ApiPropertyOptional() - @Expose() - guardianEmail: string; - - @ApiPropertyOptional({ - type: "string", - format: "binary", - }) - @Expose() - image: string; - - @ApiPropertyOptional() - @Expose() - studentAddress: string; - - @ApiProperty() - @Expose() - village: string; - - @ApiProperty() - @Expose() - block: string; - - @ApiProperty() - @Expose() - district: string; - - @ApiProperty() - @Expose() - stateId: string; - - @ApiProperty() - @Expose() - pincode: Number; - - @ApiProperty() - @Expose() - locationId: string; - - @ApiPropertyOptional() - @Expose() - deactivationReason: string; - - @ApiPropertyOptional() - @Expose() - metaData: [string]; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - @Expose() - createdBy: string; - - @Expose() - updatedBy: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/student/interfaces/student.interface.ts b/src/student/interfaces/student.interface.ts deleted file mode 100644 index db0d9903..00000000 --- a/src/student/interfaces/student.interface.ts +++ /dev/null @@ -1,23 +0,0 @@ -export interface StudentInterface { - studentId?: string; - refId?: string; - aadhaar?: string; - firstName?: string; - lastName?: string; - schoolId?: string; - currentClassId?: string; - gender?: string; - socialCategory?: string; - iscwsn?: string; - religion?: string; - singleGirl?: string; - weight?: string; - height?: string; - bloodGroup?: string; - birthDate?: string; - homeless?: string; - bpl?: string; - migrant?: string; - status?: string; - email?: string; -} diff --git a/src/student/student.controller.spec.ts b/src/student/student.controller.spec.ts deleted file mode 100644 index 52ad318f..00000000 --- a/src/student/student.controller.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { StudentController } from "./student.controller"; - -describe("StudentController", () => { - let controller: StudentController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [StudentController], - }).compile(); - - controller = module.get(StudentController); - }); - - it("should be defined", () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/student/student.controller.ts b/src/student/student.controller.ts deleted file mode 100644 index 556b97b4..00000000 --- a/src/student/student.controller.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { Request } from "@nestjs/common"; -import { - ApiTags, - ApiBody, - ApiOkResponse, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiExcludeController, -} from "@nestjs/swagger"; -import { - Controller, - Get, - Post, - Body, - Put, - Patch, - Param, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, -} from "@nestjs/common"; -import { StudentDto } from "./dto/student.dto"; -import { StudentSearchDto } from "./dto/student-search.dto"; -import { IServicelocator } from "src/adapters/studentservicelocator"; -import { StudentAdapter } from "./studentadapter"; -// @ApiTags("Student") -@ApiExcludeController() -@Controller("student") -export class StudentController { - constructor(private studentAdapter: StudentAdapter) {} - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Student detail." }) - @ApiForbiddenResponse({ description: "Forbidden" }) - @SerializeOptions({ - strategy: "excludeAll", - }) - getStudent(@Param("id") studentId: string, @Req() request: Request) { - return this.studentAdapter - .buildStudentAdapter() - .getStudent(studentId, request); - } - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Student has been created successfully." }) - // @ApiBody({ type: StudentDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async createStudent( - @Req() request: Request, - @Body() studentDto: StudentDto - ) { - return this.studentAdapter - .buildStudentAdapter() - .createStudent(request, studentDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Student has been updated successfully." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async updateStudent( - @Param("id") id: string, - @Req() request: Request, - @Body() studentDto: StudentDto - ) { - return await this.studentAdapter - .buildStudentAdapter() - .updateStudent(id, request, studentDto); - } - - @Post("/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Student list." }) - // @ApiBody({ type: StudentSearchDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async searchStudent( - @Req() request: Request, - @Body() studentSearchDto: StudentSearchDto - ) { - return this.studentAdapter - .buildStudentAdapter() - .searchStudent(request, studentSearchDto); - } -} diff --git a/src/student/student.module.ts b/src/student/student.module.ts deleted file mode 100644 index 23c37fbd..00000000 --- a/src/student/student.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Module } from "@nestjs/common"; -import { StudentController } from "./student.controller"; -import { HttpModule } from "@nestjs/axios"; -import { StudentAdapter } from "./studentadapter"; - -@Module({ - imports: [HttpModule], - controllers: [StudentController], - providers: [StudentAdapter], -}) -export class StudentModule {} diff --git a/src/student/studentadapter.ts b/src/student/studentadapter.ts deleted file mode 100644 index b72d5097..00000000 --- a/src/student/studentadapter.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { IServicelocator } from "src/adapters/studentservicelocator"; - -@Injectable() -export class StudentAdapter { - constructor() {} - buildStudentAdapter(): IServicelocator { - let adapter: IServicelocator; - - switch (process.env.ADAPTERSOURCE) { - } - return adapter; - } -} From 02caa8b6ea5894aba10dbfd2cfc10892b1b2dfc7 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:34:47 +0530 Subject: [PATCH 02/13] chore : removed school module --- src/adapters/hasura/hasura.module.ts | 3 - src/adapters/hasura/school.adapter.ts | 286 ---------------------- src/adapters/schoolservicelocator.ts | 9 - src/app.module.ts | 1 - src/school/dto/school-response.dto.ts | 15 -- src/school/dto/school-search.dto.ts | 26 -- src/school/dto/school.dto.ts | 184 -------------- src/school/interfaces/school.interface.ts | 15 -- src/school/school.controller.spec.ts | 18 -- src/school/school.controller.ts | 90 ------- src/school/school.module.ts | 12 - src/school/schooladapter.ts | 18 -- 12 files changed, 677 deletions(-) delete mode 100644 src/adapters/hasura/school.adapter.ts delete mode 100644 src/adapters/schoolservicelocator.ts delete mode 100644 src/school/dto/school-response.dto.ts delete mode 100644 src/school/dto/school-search.dto.ts delete mode 100644 src/school/dto/school.dto.ts delete mode 100644 src/school/interfaces/school.interface.ts delete mode 100644 src/school/school.controller.spec.ts delete mode 100644 src/school/school.controller.ts delete mode 100644 src/school/school.module.ts delete mode 100644 src/school/schooladapter.ts diff --git a/src/adapters/hasura/hasura.module.ts b/src/adapters/hasura/hasura.module.ts index 67643280..d6a4354a 100644 --- a/src/adapters/hasura/hasura.module.ts +++ b/src/adapters/hasura/hasura.module.ts @@ -5,7 +5,6 @@ import { HasuraCommentService } from "./comment.adapter"; import { HasuraConfigService } from "./config.adapter"; import { HasuraHolidayService } from "./holiday.adapter"; import { HasuraLikeService } from "./like.adapter"; -import { SchoolHasuraService } from "./school.adapter"; import { HasuraCohortService } from "./cohort.adapter"; import { HasuraCohortMembersService } from "./cohortMembers.adapter"; import { HasuraFieldsService } from "./fields.adapter"; @@ -16,7 +15,6 @@ import { HasuraUserService } from "./user.adapter"; imports: [HttpModule], providers: [ AttendanceHasuraService, - SchoolHasuraService, HasuraCohortService, HasuraCohortMembersService, HasuraCommentService, @@ -29,7 +27,6 @@ import { HasuraUserService } from "./user.adapter"; ], exports: [ AttendanceHasuraService, - SchoolHasuraService, HasuraCohortService, HasuraCohortMembersService, HasuraCommentService, diff --git a/src/adapters/hasura/school.adapter.ts b/src/adapters/hasura/school.adapter.ts deleted file mode 100644 index ca6188f6..00000000 --- a/src/adapters/hasura/school.adapter.ts +++ /dev/null @@ -1,286 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; -import { SchoolDto } from "src/school/dto/school.dto"; -import { SchoolSearchDto } from "src/school/dto/school-search.dto"; -import { IServicelocator } from "../schoolservicelocator"; -export const HasuraSchoolToken = "HasuraSchool"; -@Injectable() -export class SchoolHasuraService implements IServicelocator { - constructor(private httpService: HttpService) {} - - public async createSchool(request: any, schoolDto: SchoolDto) { - var axios = require("axios"); - const schoolSchema = new SchoolDto(schoolDto); - let query = ""; - Object.keys(schoolDto).forEach((e) => { - if ( - schoolDto[e] && - schoolDto[e] != "" && - Object.keys(schoolSchema).includes(e) - ) { - if (Array.isArray(schoolDto[e])) { - query += `${e}: ${JSON.stringify(schoolDto[e])}, `; - } else { - query += `${e}: "${schoolDto[e]}", `; - } - } - }); - - var data = { - query: `mutation CreateSchool { - insert_school_one(object: {${query}}) { - schoolId - } - } - `, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data.insert_school_one; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateSchool(id: string, request: any, schoolDto: SchoolDto) { - var axios = require("axios"); - const schoolSchema = new SchoolDto(schoolDto); - let query = ""; - Object.keys(schoolDto).forEach((e) => { - if ( - schoolDto[e] && - schoolDto[e] != "" && - Object.keys(schoolSchema).includes(e) - ) { - if (Array.isArray(schoolDto[e])) { - query += `${e}: ${JSON.stringify(schoolDto[e])}, `; - } else { - query += `${e}: "${schoolDto[e]}", `; - } - } - }); - - var data = { - query: `mutation UpdateSchool($schoolId:uuid) { - update_school(where: {schoolId: {_eq: $schoolId}}, _set: {${query}}) { - affected_rows - }}`, - variables: { - schoolId: id, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async getSchool(schoolId: any, request: any) { - var axios = require("axios"); - - var data = { - query: `query GetSchool($schoolId:uuid!) { - school_by_pk(schoolId: $schoolId) { - address - block - created_at - deactivationReason - district - email - latitude - enrollCount - locationId - longitude - mediumOfInstruction - metaData - phoneNumber - updated_at - status - udise - stateId - schoolType - schoolName - schoolId - pincode - village - website - cluster - headMaster - board - } - } - `, - variables: { schoolId: schoolId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = [response.data.data.school_by_pk]; - const schoolDto = await this.mappedResponse(result); - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: schoolDto[0], - }); - } - public async searchSchool(request: any, schoolSearchDto: SchoolSearchDto) { - var axios = require("axios"); - - let offset = 0; - - if (schoolSearchDto.page > 1) { - offset = parseInt(schoolSearchDto.limit) * (schoolSearchDto.page - 1); - } - - let query = ""; - Object.keys(schoolSearchDto.filters).forEach((e) => { - if (schoolSearchDto.filters[e] && schoolSearchDto.filters[e] != "") { - query += `${e}:{_eq:"${schoolSearchDto.filters[e]}"}`; - } - }); - - var data = { - query: `query SearchSchool($limit:Int, $offset:Int) { - school_aggregate { - aggregate { - count - } - } - school(where:{ ${query}}, limit: $limit, offset: $offset,) { - address - block - created_at - deactivationReason - district - email - latitude - enrollCount - locationId - longitude - mediumOfInstruction - metaData - phoneNumber - updated_at - status - udise - stateId - schoolType - schoolName - schoolId - pincode - village - website - cluster - headMaster - board - } - }`, - variables: { - limit: parseInt(schoolSearchDto.limit), - offset: offset, - }, - }; - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = response.data.data.school; - const schoolDto = await this.mappedResponse(result); - const count = response?.data?.data?.school_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: schoolDto, - }); - } - public async mappedResponse(result: any) { - const schoolResponse = result.map((item: any) => { - const schoolMapping = { - id: item?.schoolId ? `${item.schoolId}` : "", - schoolId: item?.schoolId ? `${item.schoolId}` : "", - schoolName: item?.schoolName ? `${item.schoolName}` : "", - email: item?.email ? `${item.email}` : "", - udise: item?.udise ? `${item.udise}` : "", - mediumOfInstruction: item?.mediumOfInstruction - ? item.mediumOfInstruction - : "", - phoneNumber: item?.phoneNumber ? item.phoneNumber : "", - address: item?.address ? item.address : "", - schoolType: item?.schoolType ? `${item.schoolType}` : "", - website: item?.website ? `${item.website}` : "", - headMaster: item?.headMaster ? `${item.headMaster}` : "", - board: item?.board ? `${item.board}` : "", - village: item?.village ? `${item.village}` : "", - block: item?.block ? `${item.block}` : "", - district: item?.district ? `${item.district}` : "", - stateId: item?.stateId ? `${item.stateId}` : "", - cluster: item?.cluster ? `${item.cluster}` : "", - pincode: item?.pincode ? item.pincode : "", - locationId: item?.locationId ? `${item.locationId}` : "", - enrollCount: item?.enrollCount ? `${item.enrollCount}` : "", - status: item?.status ? `${item.status}` : "", - latitude: item?.latitude ? item.latitude : "", - longitude: item?.longitude ? item.longitude : "", - metaData: item?.metaData ? item.metaData : [], - deactivationReason: item?.deactivationReason - ? `${item.deactivationReason}` - : "", - createdAt: item?.created_at ? `${item.created_at}` : "", - updatedAt: item?.updated_at ? `${item.updated_at}` : "", - }; - return new SchoolDto(schoolMapping); - }); - - return schoolResponse; - } -} diff --git a/src/adapters/schoolservicelocator.ts b/src/adapters/schoolservicelocator.ts deleted file mode 100644 index fae79c28..00000000 --- a/src/adapters/schoolservicelocator.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { SchoolSearchDto } from "src/school/dto/school-search.dto"; -import { SchoolDto } from "src/school/dto/school.dto"; - -export interface IServicelocator { - searchSchool(request: any, schoolSearchDto: SchoolSearchDto); - createSchool(request: any, schoolDto: SchoolDto); - updateSchool(id: string, request: any, schoolDto: SchoolDto); - getSchool(schoolId: any, request: any); -} diff --git a/src/app.module.ts b/src/app.module.ts index 639eaf01..f5c7dfaf 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -6,7 +6,6 @@ import { AppService } from "./app.service"; // Below modules not in use for Shiksha 2.0 /* -import { SchoolModule } from "./school/school.module"; import { HolidayModule } from "./holiday/holiday.module"; import { ConfigurationModule } from "./configs/configuration.module"; import { WorksheetModule } from "./worksheet/worksheet.module"; diff --git a/src/school/dto/school-response.dto.ts b/src/school/dto/school-response.dto.ts deleted file mode 100644 index 8435e097..00000000 --- a/src/school/dto/school-response.dto.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface SchoolResponseDto { - schoolId: string; - schoolName: string; - email: string; - schoolRefId: string; - instituteManagement: string; - address: string; - schoolType: string; - website: string; - street: string; - city: string; - district: string; - state: string; - pincode: string; -} diff --git a/src/school/dto/school-search.dto.ts b/src/school/dto/school-search.dto.ts deleted file mode 100644 index b7f1cd9c..00000000 --- a/src/school/dto/school-search.dto.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class SchoolSearchDto { - @ApiProperty({ - type: String, - description: "Limit", - }) - limit: string; - - @ApiProperty({ - type: Number, - description: "Page", - }) - page: number; - - @ApiProperty({ - type: Object, - description: "Filters", - }) - @ApiPropertyOptional() - filters: object; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/school/dto/school.dto.ts b/src/school/dto/school.dto.ts deleted file mode 100644 index 03c278f9..00000000 --- a/src/school/dto/school.dto.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Exclude, Expose } from "class-transformer"; -import { - MaxLength, - IsNotEmpty, - IsEmail, - IsString, - IsNumber, -} from "class-validator"; -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class SchoolDto { - @Expose() - id: string; - - @Expose() - schoolId: string; - - @ApiProperty({ - type: String, - description: "The schoolName of the school", - }) - @Expose() - schoolName: string; - - @ApiProperty({ - type: String, - description: "The email of the school", - }) - @IsEmail() - @Expose() - email: string; - - @ApiProperty({ - type: String, - description: "The udise of the school", - }) - @Expose() - udise: string; - - @ApiProperty({ - type: [String], - description: "The medium of instruction of the school", - }) - @Expose() - mediumOfInstruction: [string]; - - @ApiProperty({ - type: Number, - description: "The phone number of the school", - }) - @IsNumber() - @Expose() - phoneNumber: Number; - - @ApiProperty({ - type: String, - description: "The address of the school", - }) - @Expose() - address: string; - - @ApiProperty({ - type: String, - description: "The schoolType of the school", - }) - @Expose() - schoolType: string; - - @ApiProperty({ - type: String, - description: "The website of the school", - }) - @Expose() - website: string; - - @ApiProperty({ - type: String, - description: "The Head master of the school", - }) - @Expose() - headMaster: string; - - @ApiProperty({ - type: String, - description: "The Board of the school", - }) - @Expose() - board: string; - - @ApiProperty({ - type: String, - description: "The village of the school", - }) - @Expose() - village: string; - - @ApiProperty({ - type: String, - description: "The block of the school", - }) - @Expose() - block: string; - - @ApiProperty({ - type: String, - description: "The district of the school", - }) - @Expose() - district: string; - - @ApiProperty({ - type: String, - description: "The stateId of the school", - }) - @Expose() - stateId: string; - - @ApiProperty({ - type: Number, - description: "The pincode of the school", - }) - @Expose() - pincode: Number; - - @ApiProperty({ - type: String, - description: "The cluster of the school", - }) - @Expose() - cluster: string; - - @ApiProperty({ - type: String, - description: "The locationId of the school", - }) - @Expose() - locationId: string; - - @ApiProperty({ - type: String, - description: "The enrollCount of the school", - }) - @Expose() - enrollCount: string; - - @ApiProperty({ - type: String, - description: "The status of the school", - }) - @Expose() - status: string; - - @ApiProperty({ - type: Number, - description: "The latitude of the school", - }) - @Expose() - latitude: Number; - - @ApiProperty({ - type: Number, - description: "The longitude of the school", - }) - @Expose() - longitude: Number; - - @ApiPropertyOptional() - @Expose() - metaData: [string]; - - @ApiPropertyOptional({}) - @Expose() - deactivationReason: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/school/interfaces/school.interface.ts b/src/school/interfaces/school.interface.ts deleted file mode 100644 index aea9e0a0..00000000 --- a/src/school/interfaces/school.interface.ts +++ /dev/null @@ -1,15 +0,0 @@ -export interface SchoolInterface { - schoolId?: string; - schoolName?: string; - email?: string; - schoolRefId?: string; - instituteManagement?: string; - address?: string; - schoolType?: string; - website?: string; - street?: string; - city?: string; - district?: string; - state?: string; - pincode?: string; -} diff --git a/src/school/school.controller.spec.ts b/src/school/school.controller.spec.ts deleted file mode 100644 index 6c749dfb..00000000 --- a/src/school/school.controller.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { SchoolController } from "./school.controller"; - -describe("SchoolController", () => { - let controller: SchoolController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [SchoolController], - }).compile(); - - controller = module.get(SchoolController); - }); - - it("should be defined", () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/school/school.controller.ts b/src/school/school.controller.ts deleted file mode 100644 index ff5b1adc..00000000 --- a/src/school/school.controller.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { - Controller, - Get, - Post, - Put, - Param, - Body, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, - Request, -} from "@nestjs/common"; -import { SchoolDto } from "./dto/school.dto"; -import { - ApiTags, - ApiBody, - ApiOkResponse, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiExcludeController, -} from "@nestjs/swagger"; -import { SchoolSearchDto } from "./dto/school-search.dto"; -import { SchoolAdapter } from "./schooladapter"; -// @ApiTags("School") -@ApiExcludeController() -@Controller("school") -export class SchoolController { - constructor(private schoolAdapter: SchoolAdapter) {} - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - // @ApiOkResponse({ description: "School detail." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async getSchool(@Param("id") id: string, @Req() request: Request) { - return this.schoolAdapter.buildSchoolAdapter().getSchool(id, request); - } - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "School has been created successfully." }) - // @ApiBody({ type: SchoolDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async createSchool( - @Req() request: Request, - @Body() schoolDto: SchoolDto - ) { - return this.schoolAdapter - .buildSchoolAdapter() - .createSchool(request, schoolDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "School has been updated successfully." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async updateSchool( - @Param("id") id: string, - @Req() request: Request, - @Body() schoolDto: SchoolDto - ) { - return this.schoolAdapter - .buildSchoolAdapter() - .updateSchool(id, request, schoolDto); - } - @Post("/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "School list." }) - // @ApiBody({ type: SchoolSearchDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async searchSchool( - @Req() request: Request, - @Body() schoolSearchDto: SchoolSearchDto - ) { - return this.schoolAdapter - .buildSchoolAdapter() - .searchSchool(request, schoolSearchDto); - } -} diff --git a/src/school/school.module.ts b/src/school/school.module.ts deleted file mode 100644 index d17e243e..00000000 --- a/src/school/school.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { CacheModule, Module } from "@nestjs/common"; -import { SchoolController } from "./school.controller"; -import { HttpModule } from "@nestjs/axios"; -import { SchoolAdapter } from "./schooladapter"; -import { HasuraModule } from "src/adapters/hasura/hasura.module"; - -@Module({ - imports: [HttpModule, HasuraModule], - controllers: [SchoolController], - providers: [SchoolAdapter], -}) -export class SchoolModule {} diff --git a/src/school/schooladapter.ts b/src/school/schooladapter.ts deleted file mode 100644 index 0dc24e95..00000000 --- a/src/school/schooladapter.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { SchoolHasuraService } from "src/adapters/hasura/school.adapter"; -import { IServicelocator } from "src/adapters/schoolservicelocator"; - -@Injectable() -export class SchoolAdapter { - constructor(private hasuraProvider: SchoolHasuraService) {} - buildSchoolAdapter(): IServicelocator { - let adapter: IServicelocator; - - switch (process.env.ADAPTERSOURCE) { - case "hasura": - adapter = this.hasuraProvider; - break; - } - return adapter; - } -} From b044f9b208689e9cf548a00a90c55b6f1d039da4 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:37:38 +0530 Subject: [PATCH 03/13] chore : removed holiday module --- src/adapters/hasura/hasura.module.ts | 3 - src/adapters/hasura/holiday.adapter.ts | 290 ------------------------- src/adapters/holidayservicelocator.ts | 10 - src/app.module.ts | 1 - src/holiday/dto/holiday-search.dto.ts | 26 --- src/holiday/dto/holiday.dto.ts | 57 ----- src/holiday/holiday.controller.spec.ts | 18 -- src/holiday/holiday.controller.ts | 112 ---------- src/holiday/holiday.module.ts | 12 - src/holiday/holidayadapter.ts | 18 -- 10 files changed, 547 deletions(-) delete mode 100644 src/adapters/hasura/holiday.adapter.ts delete mode 100644 src/adapters/holidayservicelocator.ts delete mode 100644 src/holiday/dto/holiday-search.dto.ts delete mode 100644 src/holiday/dto/holiday.dto.ts delete mode 100644 src/holiday/holiday.controller.spec.ts delete mode 100644 src/holiday/holiday.controller.ts delete mode 100644 src/holiday/holiday.module.ts delete mode 100644 src/holiday/holidayadapter.ts diff --git a/src/adapters/hasura/hasura.module.ts b/src/adapters/hasura/hasura.module.ts index d6a4354a..f33e4be1 100644 --- a/src/adapters/hasura/hasura.module.ts +++ b/src/adapters/hasura/hasura.module.ts @@ -3,7 +3,6 @@ import { Module } from "@nestjs/common"; import { AttendanceHasuraService } from "./attendance.adapter"; import { HasuraCommentService } from "./comment.adapter"; import { HasuraConfigService } from "./config.adapter"; -import { HasuraHolidayService } from "./holiday.adapter"; import { HasuraLikeService } from "./like.adapter"; import { HasuraCohortService } from "./cohort.adapter"; import { HasuraCohortMembersService } from "./cohortMembers.adapter"; @@ -20,7 +19,6 @@ import { HasuraUserService } from "./user.adapter"; HasuraCommentService, HasuraConfigService, HasuraLikeService, - HasuraHolidayService, HasuraFieldsService, FieldsService, HasuraUserService, @@ -32,7 +30,6 @@ import { HasuraUserService } from "./user.adapter"; HasuraCommentService, HasuraConfigService, HasuraLikeService, - HasuraHolidayService, HasuraFieldsService, HasuraUserService, ], diff --git a/src/adapters/hasura/holiday.adapter.ts b/src/adapters/hasura/holiday.adapter.ts deleted file mode 100644 index 99d82637..00000000 --- a/src/adapters/hasura/holiday.adapter.ts +++ /dev/null @@ -1,290 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; - -import { IServicelocator } from "../holidayservicelocator"; -import { HolidayDto } from "src/holiday/dto/holiday.dto"; -import { HolidaySearchDto } from "src/holiday/dto/holiday-search.dto"; -export const HasuraHolidayToken = "HasuraHoliday"; -@Injectable() -export class HasuraHolidayService implements IServicelocator { - constructor(private httpService: HttpService) {} - - public async createHoliday(request: any, holidayDto: HolidayDto) { - var axios = require("axios"); - - const holidaySchema = new HolidayDto(holidayDto); - let query = ""; - Object.keys(holidayDto).forEach((e) => { - if ( - holidayDto[e] && - holidayDto[e] != "" && - Object.keys(holidaySchema).includes(e) - ) { - if (Array.isArray(holidayDto[e])) { - query += `${e}: ${JSON.stringify(holidayDto[e])}, `; - } else { - query += `${e}: "${holidayDto[e]}", `; - } - } - }); - - var data = { - query: `mutation CreateHoliday { - insert_holiday_one(object: {${query}}) { - holidayId - } - } - `, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data.insert_holiday_one; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateHoliday(id: string, request: any, holidayDto: HolidayDto) { - var axios = require("axios"); - - const holidaySchema = new HolidayDto(holidayDto); - let query = ""; - Object.keys(holidayDto).forEach((e) => { - if ( - holidayDto[e] && - holidayDto[e] != "" && - Object.keys(holidaySchema).includes(e) - ) { - if (Array.isArray(holidayDto[e])) { - query += `${e}: ${JSON.stringify(holidayDto[e])}, `; - } else { - query += `${e}: "${holidayDto[e]}", `; - } - } - }); - - var data = { - query: `mutation UpdateHoliday($holidayId:uuid) { - update_holiday(where: {holidayId: {_eq: $holidayId}}, _set: {${query}}) { - affected_rows - }}`, - variables: { - holidayId: id, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async getHoliday(holidayId: any, request: any) { - var axios = require("axios"); - - var data = { - query: `query GetHoliday($holidayId:uuid!) { - holiday_by_pk(holidayId: $holidayId) { - context - contextId - created_at - date - holidayId - remark - updated_at - year - } - } - `, - variables: { holidayId: holidayId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = [response.data.data.holiday_by_pk]; - const holidayData = await this.mappedResponse(result); - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: holidayData[0], - }); - } - - public async searchHoliday(request: any, holidaySearchDto: HolidaySearchDto) { - var axios = require("axios"); - - let offset = 0; - if (holidaySearchDto.page > 1) { - offset = parseInt(holidaySearchDto.limit) * (holidaySearchDto.page - 1); - } - - let filters = holidaySearchDto.filters; - - Object.keys(holidaySearchDto.filters).forEach((item) => { - Object.keys(holidaySearchDto.filters[item]).forEach((e) => { - if (!e.startsWith("_")) { - filters[item][`_${e}`] = filters[item][e]; - delete filters[item][e]; - } - }); - }); - var data = { - query: `query SearchHoliday($filters:holiday_bool_exp,$limit:Int, $offset:Int) { - holiday_aggregate { - aggregate { - count - } - } - holiday(where:$filters, limit: $limit, offset: $offset,) { - context - contextId - created_at - date - holidayId - remark - updated_at - year - } - }`, - variables: { - limit: parseInt(holidaySearchDto.limit), - offset: offset, - filters: holidaySearchDto.filters, - }, - }; - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = response.data.data.holiday; - const holidayData = await this.mappedResponse(result); - const count = response?.data?.data?.holiday_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: holidayData, - }); - } - - public async holidayFilter(fromDate: string, toDate: string, request: any) { - let axios = require("axios"); - - let searchData = { - fromDate, - toDate, - }; - - let query = `date:{_gte: "${searchData.fromDate}"}, _and: {date: {_lte: "${searchData.toDate}"}} `; - - var data = { - query: `query searchHoliday { - holiday_aggregate { - aggregate { - count - } - } - holiday( where: {${query}}) { - context - contextId - created_at - date - holidayId - remark - updated_at - year - } -}`, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = response.data.data.holiday; - const holidayData = await this.mappedResponse(result); - const count = response?.data?.data?.holiday_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: holidayData, - }); - } - - public async mappedResponse(result: any) { - const holidayResponse = result.map((item: any) => { - const holidayMapping = { - id: item?.holidayId ? `${item.holidayId}` : "", - holidayId: item?.holidayId ? `${item.holidayId}` : "", - date: item?.remark ? item.remark : "", - remark: item?.remark ? `${item.remark}` : "", - year: item?.year ? item.year : "", - context: item?.context ? `${item.context}` : "", - contextId: item?.contextId ? `${item.contextId}` : "", - createdAt: item?.created_at ? `${item.created_at}` : "", - updatedAt: item?.updated_at ? `${item.updated_at}` : "", - }; - return new HolidayDto(holidayMapping); - }); - - return holidayResponse; - } -} diff --git a/src/adapters/holidayservicelocator.ts b/src/adapters/holidayservicelocator.ts deleted file mode 100644 index e6b0e687..00000000 --- a/src/adapters/holidayservicelocator.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { HolidaySearchDto } from "src/holiday/dto/holiday-search.dto"; -import { HolidayDto } from "src/holiday/dto/holiday.dto"; - -export interface IServicelocator { - getHoliday(holidayId: string, request: any); - createHoliday(request: any, holidayDto: HolidayDto); - updateHoliday(holidayId: string, request: any, holidayDto: HolidayDto); - searchHoliday(request: any, holidaySearchDto: HolidaySearchDto); - holidayFilter(fromDate: string, toDate: string, request: any); -} diff --git a/src/app.module.ts b/src/app.module.ts index f5c7dfaf..58cb811d 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -6,7 +6,6 @@ import { AppService } from "./app.service"; // Below modules not in use for Shiksha 2.0 /* -import { HolidayModule } from "./holiday/holiday.module"; import { ConfigurationModule } from "./configs/configuration.module"; import { WorksheetModule } from "./worksheet/worksheet.module"; import { QuestionModule } from "./Question/question.module"; diff --git a/src/holiday/dto/holiday-search.dto.ts b/src/holiday/dto/holiday-search.dto.ts deleted file mode 100644 index c8ffbe39..00000000 --- a/src/holiday/dto/holiday-search.dto.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class HolidaySearchDto { - @ApiProperty({ - type: String, - description: "Limit", - }) - limit: string; - - @ApiProperty({ - type: Number, - description: "Page", - }) - page: number; - - @ApiProperty({ - type: Object, - description: "Filters", - }) - @ApiPropertyOptional() - filters: object; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/holiday/dto/holiday.dto.ts b/src/holiday/dto/holiday.dto.ts deleted file mode 100644 index 344f42a7..00000000 --- a/src/holiday/dto/holiday.dto.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty } from "@nestjs/swagger"; - -export class HolidayDto { - @Expose() - id: string; - - @Expose() - holidayId: string; - - @ApiProperty({ - type: String, - description: "The date of the holiday", - default: `eg. ${new Date().toISOString().split("T")[0]}`, - }) - @Expose() - date: Date; - - @ApiProperty({ - type: String, - description: "The remark of the holiday", - }) - @Expose() - remark: string; - - @ApiProperty({ - type: String, - description: "The year of the holiday", - default: `eg. ${new Date().toISOString().split("T")[0]}`, - }) - @Expose() - year: Date; - - @ApiProperty({ - type: String, - description: "The context of the holiday", - }) - @Expose() - context: string; - - @ApiProperty({ - type: String, - description: "The context id of the holiday", - }) - @Expose() - contextId: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/holiday/holiday.controller.spec.ts b/src/holiday/holiday.controller.spec.ts deleted file mode 100644 index d7734f6d..00000000 --- a/src/holiday/holiday.controller.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { HolidayController } from "./holiday.controller"; - -describe("HolidayController", () => { - let controller: HolidayController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [HolidayController], - }).compile(); - - controller = module.get(HolidayController); - }); - - it("should be defined", () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/holiday/holiday.controller.ts b/src/holiday/holiday.controller.ts deleted file mode 100644 index f5e03c84..00000000 --- a/src/holiday/holiday.controller.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { - Controller, - Get, - Post, - Body, - Put, - Param, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, - Query, -} from "@nestjs/common"; -import { - ApiTags, - ApiBody, - ApiOkResponse, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiQuery, - ApiExcludeController, -} from "@nestjs/swagger"; -import { HolidayDto } from "./dto/holiday.dto"; -import { HolidaySearchDto } from "./dto/holiday-search.dto"; -import { Request } from "@nestjs/common"; -import { HolidayAdapter } from "./holidayadapter"; -// @ApiTags("Holiday") - -@ApiExcludeController() -@Controller("holiday") -export class HolidayController { - constructor(private holidayProvider: HolidayAdapter) {} - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Holiday detail." }) - @SerializeOptions({ - strategy: "excludeAll", - }) - getHolidays(@Param("id") holidayId: string, @Req() request: Request) { - return this.holidayProvider - .buildHolidayAdapter() - .getHoliday(holidayId, request); - } - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Holiday has been created successfully." }) - // @ApiBody({ type: HolidayDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async createHoliday( - @Req() request: Request, - @Body() holidayDto: HolidayDto - ) { - return await this.holidayProvider - .buildHolidayAdapter() - .createHoliday(request, holidayDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Holiday has been updated successfully." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async updateHoliday( - @Param("id") holidayId: string, - @Req() request: Request, - @Body() holidayDto: HolidayDto - ) { - return await this.holidayProvider - .buildHolidayAdapter() - .updateHoliday(holidayId, request, holidayDto); - } - - @Post("/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Holiday list." }) - // @ApiBody({ type: HolidaySearchDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async searchHoliday( - @Req() request: Request, - @Body() holidaySearchDto: HolidaySearchDto - ) { - return await this.holidayProvider - .buildHolidayAdapter() - .searchHoliday(request, holidaySearchDto); - } - - @Get("") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: " Ok." }) - @ApiForbiddenResponse({ description: "Forbidden" }) - @ApiQuery({ name: "fromDate" }) - @ApiQuery({ name: "toDate" }) - public async holidayFilter( - @Query("fromDate") date: string, - @Query("toDate") toDate: string, - @Req() request: Request - ) { - return await this.holidayProvider - .buildHolidayAdapter() - .holidayFilter(date, toDate, request); - } -} diff --git a/src/holiday/holiday.module.ts b/src/holiday/holiday.module.ts deleted file mode 100644 index a6bb8b57..00000000 --- a/src/holiday/holiday.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { HttpModule } from "@nestjs/axios"; -import { CacheModule, Module } from "@nestjs/common"; -import { HasuraModule } from "src/adapters/hasura/hasura.module"; -import { HolidayController } from "./holiday.controller"; -import { HolidayAdapter } from "./holidayadapter"; - -@Module({ - imports: [HasuraModule, HttpModule], - controllers: [HolidayController], - providers: [HolidayAdapter], -}) -export class HolidayModule {} diff --git a/src/holiday/holidayadapter.ts b/src/holiday/holidayadapter.ts deleted file mode 100644 index c81f7cd8..00000000 --- a/src/holiday/holidayadapter.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HasuraHolidayService } from "src/adapters/hasura/holiday.adapter"; -import { IServicelocator } from "src/adapters/holidayservicelocator"; - -@Injectable() -export class HolidayAdapter { - constructor(private hasuraProvider: HasuraHolidayService) {} - buildHolidayAdapter(): IServicelocator { - let adapter: IServicelocator; - - switch (process.env.ADAPTERSOURCE) { - case "hasura": - adapter = this.hasuraProvider; - break; - } - return adapter; - } -} From 9d92c608de362fcd9d9758fc4a39330a149ad193 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:39:50 +0530 Subject: [PATCH 04/13] chore : removed worksheet module --- src/adapters/hasura/worksheet.adapter.ts | 611 ---------------------- src/app.module.ts | 1 - src/worksheet/dto/worksheet-search.dto.ts | 25 - src/worksheet/dto/worksheet.dto.ts | 169 ------ src/worksheet/worksheet.controller.ts | 142 ----- src/worksheet/worksheet.module.ts | 11 - 6 files changed, 959 deletions(-) delete mode 100644 src/adapters/hasura/worksheet.adapter.ts delete mode 100644 src/worksheet/dto/worksheet-search.dto.ts delete mode 100644 src/worksheet/dto/worksheet.dto.ts delete mode 100644 src/worksheet/worksheet.controller.ts delete mode 100644 src/worksheet/worksheet.module.ts diff --git a/src/adapters/hasura/worksheet.adapter.ts b/src/adapters/hasura/worksheet.adapter.ts deleted file mode 100644 index b04c678e..00000000 --- a/src/adapters/hasura/worksheet.adapter.ts +++ /dev/null @@ -1,611 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; -import { WorksheetDto } from "src/worksheet/dto/worksheet.dto"; -import { WorksheetSearchDto } from "src/worksheet/dto/worksheet-search.dto"; -import { ErrorResponse } from "src/error-response"; - -@Injectable() -export class WorksheetService { - constructor(private httpService: HttpService) {} - questionurl = process.env.DIKSHADEVBASEAPIURL; - templateurl = process.env.TEMPLATERURL; - url = `${process.env.BASEAPIURL}`; - public async createWorksheet(request: any, worksheetDto: WorksheetDto) { - var axios = require("axios"); - const worksheetSchema = new WorksheetDto(worksheetDto); - let query = ""; - Object.keys(worksheetDto).forEach((e) => { - if ( - worksheetDto[e] && - worksheetDto[e] != "" && - Object.keys(worksheetSchema).includes(e) - ) { - if (Array.isArray(worksheetDto[e])) { - query += `${e}: ${JSON.stringify(worksheetDto[e])}, `; - } else { - query += `${e}: "${worksheetDto[e]}", `; - } - } - }); - - var data = { - query: `mutation CreateWorksheet { - insert_worksheet_one(object: {${query}}) { - worksheetId - } - } - `, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data.insert_worksheet_one; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateWorksheet( - id: string, - request: any, - worksheetDto: WorksheetDto - ) { - var axios = require("axios"); - const worksheetSchema = new WorksheetDto(worksheetDto); - let query = ""; - Object.keys(worksheetDto).forEach((e) => { - if ( - worksheetDto[e] && - worksheetDto[e] != "" && - Object.keys(worksheetSchema).includes(e) - ) { - if (Array.isArray(worksheetDto[e])) { - query += `${e}: ${JSON.stringify(worksheetDto[e])}, `; - } else { - query += `${e}: ${worksheetDto[e]}, `; - } - } - }); - - var data = { - query: `mutation UpdateWorksheet($worksheetId:uuid) { - update_worksheet(where: {worksheetId: {_eq: $worksheetId}}, _set: {${query}}) { - affected_rows - } -}`, - variables: { - worksheetId: id, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async getWorksheet(worksheetId: any, request: any) { - var axios = require("axios"); - - var data = { - query: `query GetWorksheet($worksheetId:uuid!) { - worksheet_by_pk(worksheetId: $worksheetId) { - created_at - feedback - criteria - grade - hints - instructions - level - name - navigationMode - outcomeDeclaration - outcomeProcessing - purpose - questionSetType - questionSets - questions - qumlVersion - showHints - source - state - subject - timeLimits - topic - updated_at - usedFor - visibility - worksheetId - } - } - `, - variables: { worksheetId: worksheetId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - let result = [response.data.data.worksheet_by_pk]; - const worksheetResponse = await this.mappedResponse(result); - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: worksheetResponse[0], - }); - } - - public async searchWorksheet( - worksheetSearchDto: WorksheetSearchDto, - request: any - ) { - var axios = require("axios"); - - let offset = 0; - if (worksheetSearchDto.page > 1) { - offset = - parseInt(worksheetSearchDto.limit) * (worksheetSearchDto.page - 1); - } - - let filters = worksheetSearchDto.filters; - - Object.keys(worksheetSearchDto.filters).forEach((item) => { - Object.keys(worksheetSearchDto.filters[item]).forEach((e) => { - if (!e.startsWith("_")) { - filters[item][`_${e}`] = filters[item][e]; - delete filters[item][e]; - } - }); - }); - - var data = { - query: `query SearchWorksheet($filters:worksheet_bool_exp,$limit:Int, $offset:Int) { - worksheet_aggregate { - aggregate { - count - } - } - worksheet(where:$filters, limit: $limit, offset: $offset,) { - created_at - feedback - criteria - grade - hints - instructions - level - name - navigationMode - outcomeDeclaration - outcomeProcessing - purpose - questionSetType - questionSets - questions - qumlVersion - showHints - source - state - subject - timeLimits - topic - updated_at - usedFor - visibility - worksheetId - } - }`, - variables: { - limit: parseInt(worksheetSearchDto.limit), - offset: offset, - filters: worksheetSearchDto.filters, - }, - }; - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = response.data.data.worksheet; - const worksheetResponse = await this.mappedResponse(result); - const count = response?.data?.data?.worksheet_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: worksheetResponse, - }); - } - - public async downloadWorksheet( - worksheetId: any, - templateId: any, - request: any - ) { - var axios = require("axios"); - var template_id = parseInt(templateId); - - const templateDetail = await axios.get( - `${this.templateurl}${template_id}`, - { - headers: { - Authorization: request.headers.authorization, - }, - } - ); - - const templateData = templateDetail.data; - var templateTags = templateData.tag; - - var worksheetData = { - query: `query GetWorksheet($worksheetId:uuid) { - worksheet(where: {worksheetId: {_eq: $worksheetId}}) { - created_at - feedback - criteria - grade - hints - instructions - level - name - navigationMode - outcomeDeclaration - outcomeProcessing - purpose - questionSetType - questionSets - questions - qumlVersion - showHints - source - state - subject - timeLimits - topic - updated_at - usedFor - visibility - worksheetId - } - } - `, - variables: { worksheetId: worksheetId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: worksheetData, - }; - - const response = await axios(config); - - let resData = response.data.data.worksheet[0]; - - let questionIds = resData.questions; - - let questionsArray = []; - - for (let value of questionIds) { - let qData = { - method: "get", - url: `${this.questionurl}/question/v1/read/${value}?fields=body`, - }; - const response = await axios(qData); - const data = response?.data; - const final = data.result.question; - - if (templateTags.includes("with_answers")) { - questionsArray.push( - "
  • " + final.body + "
    Ans -


  • " - ); - } else { - questionsArray.push("
  • " + final.body + "
  • "); - } - } - - var data = { - config_id: 1, - data: { - title: resData.name, - grade: resData.grade, - subject: resData.subject, - questions: questionsArray, - }, - template_id: template_id, - }; - - const pdf = await axios.post( - `http://68.183.94.187:8000/generate/?plugin=pdf`, - data, - { - headers: { - "Content-Type": "application/json", - }, - } - ); - - const pdfUrl = pdf.data; - return new SuccessResponse({ - statusCode: 200, - message: "ok", - data: pdfUrl, - }); - } - - public async mappedResponse(result: any) { - const worksheetResponse = result.map((item: any) => { - const worksheetMapping = { - id: item?.worksheetId ? `${item.worksheetId}` : "", - worksheetId: item?.worksheetId ? `${item.worksheetId}` : "", - name: item?.name ? `${item.name}` : "", - state: item?.state ? `${item.state}` : "", - subject: item?.subject ? `${item.subject}` : "", - grade: item?.grade ? `${item.grade}` : "", - level: item?.level ? `${item.level}` : "", - instructions: item?.instructions ? `${item.instructions}` : "", - feedback: item?.feedback ? `${item.feedback}` : "", - hints: item?.hints ? `${item.hints}` : "", - navigationMode: item?.navigationMode ? `${item.navigationMode}` : "", - timeLimits: item?.timeLimits ? `${item.timeLimits}` : "", - showHints: item?.showHints ? item.showHints : "", - questions: item?.questions ? item.questions : "", - questionSets: item?.questionSets ? `${item.questionSets}` : "", - outcomeDeclaration: item?.outcomeDeclaration - ? `${item.outcomeDeclaration}` - : "", - outcomeProcessing: item?.outcomeProcessing - ? `${item.outcomeProcessing}` - : "", - questionSetType: item?.questionSetType ? `${item.questionSetType}` : "", - criteria: item?.criteria ? `${item.criteria}` : "", - usedFor: item?.usedFor ? `${item.usedFor}` : "", - purpose: item?.purpose ? `${item.purpose}` : "", - visibility: item?.visibility ? `${item.visibility}` : "", - qumlVersion: item?.qumlVersion ? `${item.qumlVersion}` : "", - topic: item?.topic ? item.topic : "", - source: item?.source ? `${item.source}` : "", - createdAt: item?.created_at ? `${item.created_at}` : "", - updatedAt: item?.updated_at ? `${item.updated_at}` : "", - }; - return new WorksheetDto(worksheetMapping); - }); - - return worksheetResponse; - } - - public async sendWorksheet( - studentIds: [string], - teacherId: string, - templateId: string, - link: string, - subject: string, - topic: string, - request: any - ) { - var axios = require("axios"); - const teacherResponse = await axios.get(`${this.url}User/${teacherId}`); - const teacher = teacherResponse.data; - const templateDetail = await axios.get(`${this.templateurl}${templateId}`); - const templateData = templateDetail.data; - - var getSchool = { - query: `query GetSchool($schoolId:uuid!) { - school_by_pk(schoolId: $schoolId) { - schoolName - } -}`, - variables: { - schoolId: teacher.schoolId, - }, - }; - - var schoolCall = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: getSchool, - }; - - const schoolResponse = await axios(schoolCall); - - let schoolData = schoolResponse?.data?.data?.school_by_pk; - studentIds.map(async (studentId) => { - const student = await axios.get(`${this.url}Student/${studentId}`); - - const process = { - id: parseInt(templateId), - data: { - studentName: - (student?.data?.firstName ? student?.data?.firstName : "") + - " " + - (student?.data?.lastName ? student?.data?.lastName : ""), - subject: subject, - topic: topic, - teacherName: - (teacher?.firstName ? teacher?.firstName : "") + - " " + - (teacher?.lastName ? teacher?.lastName : ""), - schoolName: schoolData.schoolName, - link: link, - }, - }; - - var templateCall = { - method: "post", - url: `${this.templateurl}process`, - headers: { - Authorization: request.headers.authorization, - }, - data: process, - }; - const responseData = await axios(templateCall); - - const templateDataResponse = responseData.data; - var data = { - adapterId: templateData.user, - to: { - userID: student.data.studentPhoneNumber, - deviceType: "PHONE", - }, - payload: { - text: templateDataResponse.processed, - }, - }; - - var smsSend = { - method: "post", - url: "http://143.110.255.220:9090/message/send", - headers: { - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(smsSend); - - return new SuccessResponse({ - statusCode: 200, - message: "ok", - data: response.data, - }); - }); - } - - public async StudentMappedResponse(result: any) { - const studentResponse = result.map((item: any) => { - const studentMapping = { - studentId: item?.osid ? `${item.osid}` : "", - refId1: item?.admissionNo ? `${item.admissionNo}` : "", - refId2: item?.refId2 ? `${item.refId2}` : "", - aadhaar: item?.aadhaar ? `${item.aadhaar}` : "", - firstName: item?.firstName ? `${item.firstName}` : "", - middleName: item?.middleName ? `${item.middleName}` : "", - lastName: item?.lastName ? `${item.lastName}` : "", - groupId: item?.groupId ? `${item.groupId}` : "", - schoolId: item?.schoolId ? `${item.schoolId}` : "", - studentEmail: item?.studentEmail ? `${item.studentEmail}` : "", - studentPhoneNumber: item?.studentPhoneNumber - ? item.studentPhoneNumber - : "", - iscwsn: item?.iscwsn ? `${item.iscwsn}` : "", - gender: item?.gender ? `${item.gender}` : "", - socialCategory: item?.socialCategory ? `${item.socialCategory}` : "", - religion: item?.religion ? `${item.religion}` : "", - singleGirl: item?.singleGirl ? item.singleGirl : "", - weight: item?.weight ? `${item.weight}` : "", - height: item?.height ? `${item.height}` : "", - bloodGroup: item?.bloodGroup ? `${item.bloodGroup}` : "", - birthDate: item?.birthDate ? `${item.birthDate}` : "", - homeless: item?.homeless ? item.homeless : "", - bpl: item?.bpl ? item.bpl : "", - migrant: item?.migrant ? item.migrant : "", - status: item?.status ? `${item.status}` : "", - - fatherFirstName: item?.fatherFirstName ? `${item.fatherFirstName}` : "", - - fatherMiddleName: item?.fatherMiddleName - ? `${item.fatherMiddleName}` - : "", - - fatherLastName: item?.fatherLastName ? `${item.fatherLastName}` : "", - fatherPhoneNumber: item?.fatherPhoneNumber - ? item.fatherPhoneNumber - : "", - fatherEmail: item?.fatherEmail ? `${item.fatherEmail}` : "", - - motherFirstName: item?.motherFirstName ? `${item.motherFirstName}` : "", - motherMiddleName: item?.motherMiddleName - ? `${item.motherMiddleName}` - : "", - motherLastName: item?.motherLastName ? `${item.motherLastName}` : "", - motherPhoneNumber: item?.motherPhoneNumber - ? item.motherPhoneNumber - : "", - motherEmail: item?.motherEmail ? `${item.motherEmail}` : "", - - guardianFirstName: item?.guardianFirstName - ? `${item.guardianFirstName}` - : "", - guardianMiddleName: item?.guardianMiddleName - ? `${item.guardianMiddleName}` - : "", - guardianLastName: item?.guardianLastName - ? `${item.guardianLastName}` - : "", - guardianPhoneNumber: item?.guardianPhoneNumber - ? item.guardianPhoneNumber - : "", - guardianEmail: item?.guardianEmail ? `${item.guardianEmail}` : "", - image: item?.image ? `${item.image}` : "", - deactivationReason: item?.deactivationReason - ? `${item.deactivationReason}` - : "", - studentAddress: item?.studentAddress ? `${item.studentAddress}` : "", - village: item?.village ? `${item.village}` : "", - block: item?.block ? `${item.block}` : "", - district: item?.district ? `${item.district}` : "", - stateId: item?.stateId ? `${item.stateId}` : "", - pincode: item?.pincode ? item.pincode : "", - locationId: item?.locationId ? `${item.locationId}` : "", - metaData: item?.metaData ? item.metaData : [], - createdAt: item?.osCreatedAt ? `${item.osCreatedAt}` : "", - updatedAt: item?.osUpdatedAt ? `${item.osUpdatedAt}` : "", - createdBy: item?.osCreatedBy ? `${item.osCreatedBy}` : "", - updatedBy: item?.osUpdatedBy ? `${item.osUpdatedBy}` : "", - }; - return studentMapping; - }); - - return studentResponse; - } -} diff --git a/src/app.module.ts b/src/app.module.ts index 58cb811d..9ef9fe1a 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -7,7 +7,6 @@ import { AppService } from "./app.service"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { WorksheetModule } from "./worksheet/worksheet.module"; import { QuestionModule } from "./Question/question.module"; import { LikeModule } from "./like/like.module"; import { CommentModule } from "./comment/comment.module"; diff --git a/src/worksheet/dto/worksheet-search.dto.ts b/src/worksheet/dto/worksheet-search.dto.ts deleted file mode 100644 index ee2fdf8d..00000000 --- a/src/worksheet/dto/worksheet-search.dto.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class WorksheetSearchDto { - @ApiProperty({ - type: String, - description: "Limit", - }) - limit: string; - - @ApiProperty({ - type: Number, - description: "Page", - }) - page: number; - @ApiProperty({ - type: Object, - description: "Filters", - }) - @ApiPropertyOptional() - filters: object; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/worksheet/dto/worksheet.dto.ts b/src/worksheet/dto/worksheet.dto.ts deleted file mode 100644 index 196cd1cd..00000000 --- a/src/worksheet/dto/worksheet.dto.ts +++ /dev/null @@ -1,169 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; -import { Expose } from "class-transformer"; - -export class WorksheetDto { - @Expose() - id: string; - - @Expose() - worksheetId: string; - - @ApiProperty({ - description: - "Instructions on how to understand, attempt or how the question set will be evaluated.", - }) - @Expose() - name: string; - - @ApiProperty({ - description: "Worksheet Title", - }) - @Expose() - state: string; - @ApiProperty({ - description: "Worksheet state", - }) - @Expose() - subject: string; - @ApiProperty({ - description: "Worksheet subject", - }) - @Expose() - grade: string; - @ApiProperty({ - description: "Worksheet grade level", - }) - @Expose() - level: string; - @ApiProperty({ - description: "Worksheet level", - }) - @Expose() - instructions: string; - - @ApiProperty({ - description: "Feedback shown to the students after outcome processing.", - }) - @Expose() - feedback: any; - - @ApiProperty({ - description: - "Hints are shown to the students after outcome processing or when the student requests for hints.", - }) - @Expose() - hints: any; - - @ApiProperty({ - description: - "Determines the general paths that the student may take during the test session. Applicable only when questions data is present.", - }) - @Expose() - navigationMode: string; - - @ApiProperty({ - description: - "Time limits for the complete set and/or for each question in the question set.", - }) - @Expose() - timeLimits: string; - - @ApiProperty({ - description: - "Configuration to enable/disable hints for the student while using the question set.", - }) - @Expose() - showHints: string; - - @ApiProperty({ - description: " learning outcome", - }) - @Expose() - questions: [string]; - - @ApiProperty({ - description: "Question Sets associated with the current set.", - }) - @Expose() - questionSets: any; - - @ApiProperty({ - description: - "Information about the outcome variables of the question set, i.e the values that are output of a question set session.", - }) - @Expose() - outcomeDeclaration: any; - - @ApiProperty({ - description: - "Rules to assign values to outcome variables based on the student's reponses.", - }) - @Expose() - outcomeProcessing: any; - - @ApiProperty({ - description: - "A question set can be comprised of a materialized list of questions, or can also be dynamically built at runtime by using a criteria to select member questions.", - }) - @Expose() - questionSetType: string; - - @ApiProperty({ - description: "Criteria to be used when the set type is dynamic.", - }) - @Expose() - criteria: string; - - @ApiProperty({ - description: " ", - }) - @Expose() - usedFor: string; - - @ApiProperty({ - description: "Purpose served by the question.", - }) - @Expose() - purpose: string; - - @ApiProperty({ - description: "Visibility of the question set.", - }) - @Expose() - visibility: string; - - @ApiProperty({ - description: - "Version of the QuML specification using which the question set is created.", - }) - @Expose() - qumlVersion: string; - - @ApiProperty({ - description: "Array of topic.", - }) - @Expose() - topic: [string]; - - @ApiProperty({ - description: "source of worksheet", - }) - @Expose() - source: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - @Expose() - createdBy: string; - - @Expose() - updatedBy: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/worksheet/worksheet.controller.ts b/src/worksheet/worksheet.controller.ts deleted file mode 100644 index 357b4ed3..00000000 --- a/src/worksheet/worksheet.controller.ts +++ /dev/null @@ -1,142 +0,0 @@ -import { - ApiBasicAuth, - ApiBody, - ApiCreatedResponse, - ApiExcludeController, - ApiForbiddenResponse, - ApiOkResponse, - ApiQuery, - ApiTags, -} from "@nestjs/swagger"; -import { - Body, - ClassSerializerInterceptor, - Controller, - Get, - Param, - Query, - Post, - Put, - Req, - SerializeOptions, - UseInterceptors, - Request, -} from "@nestjs/common"; -import { WorksheetService } from "src/adapters/hasura/worksheet.adapter"; -import { WorksheetDto } from "./dto/worksheet.dto"; -import { WorksheetSearchDto } from "./dto/worksheet-search.dto"; - -// @ApiTags("Worksheet") -@ApiExcludeController() -@Controller("worksheet") -export class WorksheetController { - constructor(private service: WorksheetService) {} - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Worksheet has been created successfully.", - // }) - // @ApiBody({ type: WorksheetDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async createWorksheet( - @Req() request: Request, - @Body() worksheetDto: WorksheetDto - ) { - return this.service.createWorksheet(request, worksheetDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Worksheet has been updated successfully.", - // }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async updateWorksheet( - @Param("id") id: string, - @Req() request: Request, - @Body() worksheetDto: WorksheetDto - ) { - return await this.service.updateWorksheet(id, request, worksheetDto); - } - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Worksheet detail." }) - @ApiForbiddenResponse({ description: "Forbidden" }) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async getWorksheet( - @Param("id") worksheetId: string, - @Req() request: Request - ) { - return this.service.getWorksheet(worksheetId, request); - } - - @Post("/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Worksheet list." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async searchWorksheet( - @Body() worksheetSearchDto: WorksheetSearchDto, - @Req() request: Request - ) { - return await this.service.searchWorksheet(worksheetSearchDto, request); - } - - @Post(":worksheet/pdf") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiOkResponse({ description: " Ok." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "worksheetId", required: true }) - // @ApiQuery({ name: "templateId", required: true }) - public async getWorksheetPdf( - @Query("worksheetId") worksheetId: string, - @Query("templateId") templateId: number, - @Req() request: Request - ) { - return this.service.downloadWorksheet(worksheetId, templateId, request); - } - - @Post("/share") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiOkResponse({ description: " Ok." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "studentIds", required: true }) - // @ApiQuery({ name: "teacherId", required: true }) - // @ApiQuery({ name: "templateId", required: true }) - // @ApiQuery({ name: "link", required: true }) - // @ApiQuery({ name: "subject", required: true }) - // @ApiQuery({ name: "topic", required: true }) - public async sendWorksheet( - @Query("studentIds") studentIds: [string], - @Query("teacherId") teacherId: string, - @Query("templateId") templateId: string, - @Query("link") link: string, - @Query("subject") subject: string, - @Query("topic") topic: string, - - @Req() - request: Request - ) { - return this.service.sendWorksheet( - studentIds, - teacherId, - templateId, - link, - subject, - topic, - request - ); - } -} diff --git a/src/worksheet/worksheet.module.ts b/src/worksheet/worksheet.module.ts deleted file mode 100644 index ee17258b..00000000 --- a/src/worksheet/worksheet.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { CacheModule, Module } from "@nestjs/common"; -import { HttpModule } from "@nestjs/axios"; -import { WorksheetController } from "./worksheet.controller"; -import { WorksheetService } from "src/adapters/hasura/worksheet.adapter"; - -@Module({ - imports: [HttpModule], - controllers: [WorksheetController], - providers: [WorksheetService], -}) -export class WorksheetModule {} From 87bb96d41316f4d75181c7bb643057ab802f4eb1 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:43:28 +0530 Subject: [PATCH 05/13] chore : removed question module --- src/Question/dto/question.dto.ts | 248 ------------ src/Question/dto/question.search.dto.ts | 20 - src/Question/question.controller.ts | 310 -------------- src/Question/question.module.ts | 22 - src/adapters/diksha/quml.adapter.ts | 511 ------------------------ src/adapters/hasura/question.adapter.ts | 464 --------------------- src/app.module.ts | 1 - 7 files changed, 1576 deletions(-) delete mode 100644 src/Question/dto/question.dto.ts delete mode 100644 src/Question/dto/question.search.dto.ts delete mode 100644 src/Question/question.controller.ts delete mode 100644 src/Question/question.module.ts delete mode 100644 src/adapters/diksha/quml.adapter.ts delete mode 100644 src/adapters/hasura/question.adapter.ts diff --git a/src/Question/dto/question.dto.ts b/src/Question/dto/question.dto.ts deleted file mode 100644 index 1a1c73ae..00000000 --- a/src/Question/dto/question.dto.ts +++ /dev/null @@ -1,248 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; -import { Exclude, Expose } from "class-transformer"; - -export class QuestionDto { - @Expose() - examQuestionId: string; - - @ApiProperty({ - description: - "Body contains the text, graphics, media objects and interactions that describe the question’s content.", - }) - @Expose() - body: string; - - @ApiProperty({ - description: - "Instructions on how to understand, attempt or how the question will be evaluated.", - }) - @Expose() - instructions: string; - - @ApiProperty({ - description: "Feedback shown to the students after response processing.", - }) - @Expose() - feedback: [string]; - - @ApiProperty({ - description: - "Hints are shown to the students after response processing or when the student requests for hints.", - }) - @Expose() - hints: [string]; - - @ApiProperty({ - description: "options of question.", - }) - @Expose() - options: [string]; - - @ApiProperty({ - description: "List of media used in the question", - }) - @Expose() - media: [string]; - - @ApiProperty({ - description: - "Information about answer to the question, when it is correct and optionally, how it is scored.", - }) - @Expose() - responseDeclaration: [string]; - - @ApiProperty({ - description: - "Information about the outcome variables of the question, i.e the values that are output of a question session.", - }) - @Expose() - outcomeDeclaration: [string]; - - @ApiProperty({ - description: - "Declaration of template variables that are to used for the purposes of cloning questions, i.e. auto-generating different sets of values for variables in the question.", - }) - @Expose() - templateDeclaration: [string]; - - @ApiProperty({ - description: - "One or more template rules to assign values to the template variables.", - }) - @Expose() - templateProcessing: [string]; - - @ApiProperty({ - description: - "Rules to assign values to outcome variables based on the student's reponses.", - }) - @Expose() - responseProcessing: [string]; - - @ApiProperty({ - description: "Cognitive processes involved to answer the question.", - }) - @Expose() - bloomsLevel: [string]; - - @ApiProperty({ - description: "Difficulty level of the question.", - }) - @Expose() - qlevel: [string]; - - @ApiProperty({ - description: "Purpose served by the question.", - }) - @Expose() - purpose: string; - - @ApiProperty({ - description: "Expected time for one attempt of the question.", - }) - @Expose() - expectedDuration: number; - - @ApiProperty({ - description: "Maximum score that can be awarded for the question.", - }) - @Expose() - maxScore: number; - - @ApiProperty({ - description: - "One of the standard question types - mcq, mtf, ftb, mmcq, essay, short answers, programming, other. this can be auto-derived based on the interactions used in the question.", - }) - @Expose() - type: string; - - @ApiProperty({ - description: - "If the question is visible for all or only for those who created it and/or for some specific systems or use cases.", - }) - @Expose() - visibility: string; - - @ApiProperty({ - description: - "Set to true if question data has template variables and template processing, else it is set to false.", - }) - @Expose() - isTemplate: boolean; - - @ApiProperty({ - description: "List of interactions present in the question.", - }) - @Expose() - interactions: [string]; - - @ApiProperty({ - description: "true, if question data has solutions, else, set to false", - }) - @Expose() - solutionAvailable: boolean; - - @ApiProperty({ - description: - "One of the values: responseProcessing (if question has inbuild response processing), offline (if scoring will be done offline and/or manually) or external (if an external system does the evaluation and submit the score).", - }) - @Expose() - scoringMode: string; - - @ApiProperty({ - description: - "Version of the QuML specification using which the question is created.", - }) - @Expose() - qumlVersion: string; - - @ApiProperty({ - description: - "Total cumulative time spent, in milliseconds, on the question by all users.", - }) - @Expose() - totalTimeSpent: number; - - @ApiProperty({ - description: "Average time spent per attempt, in milliseconds.", - }) - @Expose() - avgTimeSpent: number; - - @ApiProperty({ - description: "total number of attempts.", - }) - @Expose() - numAttempts: number; - - @ApiProperty({ - description: "Number of attempts where the user response is correct.", - }) - @Expose() - numCorrectAttempts: number; - - @ApiProperty({ - description: "Number of attempts where the user response is in-correct.", - }) - @Expose() - numInCorrectAttempts: number; - - @ApiProperty({ - description: - "Total number of attempts where the user did not give a response.", - }) - @Expose() - numSkips: number; - - @ApiProperty({ - description: "Average rating of the question.", - }) - @Expose() - avgRating: number; - - @ApiProperty({ - description: "Total number of ratings given for the question.", - }) - @Expose() - totalRatings: number; - - @ApiProperty({}) - @Expose() - topic: string; - - @ApiProperty({}) - @Expose() - subject: string; - - @ApiProperty({}) - @Expose() - class: string; - - @ApiProperty({}) - @Expose() - questionId: string; - - @ApiProperty({}) - @Expose() - language: string; - - @ApiProperty({}) - @Expose() - compatibilityLevel: string; - - @ApiProperty({}) - @Expose() - learningOutcome: string; - - @ApiProperty({}) - @Expose() - source: string; - - @ApiProperty({}) - @Expose() - answer: string; - - constructor(obj: QuestionDto) { - Object.assign(this, obj); - } -} diff --git a/src/Question/dto/question.search.dto.ts b/src/Question/dto/question.search.dto.ts deleted file mode 100644 index 70bcdcdd..00000000 --- a/src/Question/dto/question.search.dto.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class QuestionSearchDto { - @ApiProperty({ - type: String, - description: "Limit", - }) - limit: string; - - @ApiProperty({ - type: Object, - description: "Filters", - }) - @ApiPropertyOptional() - filters: object; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/Question/question.controller.ts b/src/Question/question.controller.ts deleted file mode 100644 index ac9fe940..00000000 --- a/src/Question/question.controller.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { - ApiBasicAuth, - ApiBody, - ApiCreatedResponse, - ApiExcludeController, - ApiForbiddenResponse, - ApiOkResponse, - ApiQuery, - ApiTags, -} from "@nestjs/swagger"; -import { - ClassSerializerInterceptor, - Controller, - Get, - UseInterceptors, - Query, - Param, - Req, - Request, - Inject, - Post, - SerializeOptions, - Body, - Put, -} from "@nestjs/common"; -import { - DikshaQuestionToken, - QumlQuestionService, -} from "src/adapters/diksha/quml.adapter"; -import { IServicelocator } from "src/adapters/questionservicelocator"; -import { QuestionDto } from "./dto/question.dto"; -import { HasuraQuestionToken } from "src/adapters/hasura/question.adapter"; - -// @ApiTags("Question") -@ApiExcludeController() -@Controller("question") -export class QuestionController { - constructor( - @Inject(DikshaQuestionToken) private dikshaProvider: IServicelocator, - - @Inject(HasuraQuestionToken) - private hasuraProvider: IServicelocator - ) {} - - @Get(":adapter/search") - @UseInterceptors(ClassSerializerInterceptor) - //@ApiBasicAuth("access-token") - // @ApiOkResponse({ description: "Get all Questions detail." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "questionType", required: false }) - // @ApiQuery({ name: "subject", required: false }) - // @ApiQuery({ name: "limit", required: false }) - // @ApiQuery({ name: "language", required: false }) - // @ApiQuery({ name: "medium", required: false }) - // @ApiQuery({ name: "bloomsLevel", required: false }) - // @ApiQuery({ name: "topic", required: false }) - // @ApiQuery({ name: "className", required: false }) - public async getAllQuestions( - @Param("adapter") adapter: string, - @Query("questionType") questionType: string, - @Query("subject") subject: [string], - @Query("limit") limit: string, - @Query("language") language: string, - @Query("medium") medium: string, - @Query("bloomsLevel") bloomsLevel: [string], - @Query("topic") topic: [string], - @Query("className") className: [string], - @Req() request: Request - ) { - if (adapter === "diksha") { - return this.dikshaProvider.getAllQuestions( - questionType, - subject, - limit, - language, - medium, - bloomsLevel, - topic, - className, - request - ); - } - } - - @Get(":adapter/questionIds") - @UseInterceptors(ClassSerializerInterceptor) - //@ApiBasicAuth("access-token") - // @ApiOkResponse({ description: "Get all Questions detail." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "questionIds", required: false }) - public async getAllQuestionsByQuestionIds( - @Param("adapter") adapter: string, - @Query("questionIds") questionIds: [string], - @Req() request: Request - ) { - if (adapter === "diksha") { - return this.dikshaProvider.getAllQuestionsByQuestionIds( - questionIds, - request - ); - } - } - - @Get(":adapter/subjectlist") - @UseInterceptors(ClassSerializerInterceptor) - @ApiOkResponse({ description: "Get all subject list" }) - @ApiQuery({ name: "gradeLevel", required: true }) - @ApiForbiddenResponse({ description: "Forbidden" }) - public async getSubjectList( - @Param("adapter") adapter: string, - @Query("gradeLevel") gradeLevel: string - ) { - if (adapter === "diksha") { - return this.dikshaProvider.getSubjectList(gradeLevel); - } - } - - @Get(":adapter/topicslist") - @UseInterceptors(ClassSerializerInterceptor) - @ApiOkResponse({ description: "Get all subject list" }) - @ApiQuery({ name: "subject", required: true }) - @ApiForbiddenResponse({ description: "Forbidden" }) - public async getTopicsList( - @Param("adapter") adapter: string, - @Query("subject") subject: string - ) { - if (adapter === "diksha") { - return this.dikshaProvider.getTopicsList(subject); - } - } - - @Get(":adapter/questionid") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiOkResponse({ description: "Get Questions detail." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "questionId", required: false }) - public async getOneQuestion( - @Param("adapter") adapter: string, - @Query("questionId") questionId: string, - @Req() request: Request - ) { - if (adapter === "diksha") { - return this.dikshaProvider.getOneQuestion(questionId, request); - } - } - - @Get(":adapter/competencieslist") - @UseInterceptors(ClassSerializerInterceptor) - //@ApiBasicAuth("access-token") - // @ApiOkResponse({ description: "Get all competencies list." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "subject", required: false }) - // @ApiQuery({ name: "limit", required: false }) - public async getcompetenciesList( - @Param("adapter") adapter: string, - @Query("subject") subject: string, - @Query("limit") limit: string, - @Req() request: Request - ) { - if (adapter === "diksha") { - return this.dikshaProvider.getCompetenciesList(subject, limit, request); - } - } - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Question detail." }) - @SerializeOptions({ - strategy: "excludeAll", - }) - @ApiQuery({ name: "adapter" }) - getQuestion( - @Param("id") questionId: string, - @Query("adapter") adapter: string, - @Req() request: Request - ) { - if (adapter === "diksha") { - return this.dikshaProvider.getQuestion(questionId, request); - } else if (adapter === "shiksha") { - return this.hasuraProvider.getQuestion(questionId, request); - } - } - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Question has been created successfully.", - // }) - // @ApiBody({ type: QuestionDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @UseInterceptors(ClassSerializerInterceptor) - // @ApiQuery({ name: "adapter" }) - public async createQuestion( - @Req() request: Request, - @Query("adapter") adapter: string, - @Body() questionDto: QuestionDto - ) { - if (adapter === "diksha") { - return this.dikshaProvider.createQuestion(request, questionDto); - } else if (adapter === "shiksha") { - return this.hasuraProvider.createQuestion(request, questionDto); - } - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Question has been updated successfully.", - // }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - // @ApiQuery({ name: "adapter" }) - public async updateQuestion( - @Param("id") questionId: string, - @Req() request: Request, - @Body() questionDto: QuestionDto, - @Query("adapter") adapter: string - ) { - if (adapter === "diksha") { - return this.dikshaProvider.updateQuestion( - questionId, - request, - questionDto - ); - } else if (adapter === "shiksha") { - return this.hasuraProvider.updateQuestion( - questionId, - request, - questionDto - ); - } - } - - @Post("filter/:adapter") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiOkResponse({ description: " Ok." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "limit", required: false }) - // @ApiQuery({ name: "body", required: false }) - // @ApiQuery({ name: "className", required: false }) - // @ApiQuery({ name: "maxScore", required: false }) - // @ApiQuery({ name: "questionId", required: false }) - // @ApiQuery({ name: "subject", required: false }) - // @ApiQuery({ name: "topic", required: false }) - // @ApiQuery({ name: "type", required: false }) - // @ApiQuery({ name: "page", required: false }) - public async filterQuestion( - @Param("adapter") adapter: string, - @Query("limit") limit: string, - @Query("body") body: string, - @Query("className") className: string, - @Query("maxScore") maxScore: string, - @Query("questionId") questionId: string, - @Query("subject") subject: string, - @Query("topic") topic: string, - @Query("type") type: string, - @Query("page") page: number, - @Req() request: Request - ) { - if (adapter === "diksha") { - return this.dikshaProvider.filterQuestion( - limit, - body, - className, - maxScore, - questionId, - subject, - topic, - type, - page, - request - ); - } else if (adapter === "shiksha") { - return this.hasuraProvider.filterQuestion( - limit, - body, - className, - maxScore, - questionId, - subject, - topic, - type, - page, - request - ); - } - } - - @Post(":adapter/bulkImport") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Bulk Question has been created successfully.", - // }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async bulkImport( - @Param("adapter") adapter: string, - @Req() request: Request, - @Body() questionDto: [Object] - ) { - if (adapter === "diksha") { - return this.dikshaProvider.bulkImport(request, questionDto); - } else if (adapter === "shiksha") { - return this.hasuraProvider.bulkImport(request, questionDto); - } - } -} diff --git a/src/Question/question.module.ts b/src/Question/question.module.ts deleted file mode 100644 index 6c6a008d..00000000 --- a/src/Question/question.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Module } from "@nestjs/common"; -import { HttpModule } from "@nestjs/axios"; -import { QuestionController } from "./question.controller"; -import { - DikshaQuestionToken, - QumlQuestionService, -} from "src/adapters/diksha/quml.adapter"; -import { - HasuraQuestionToken, - QuestionService, -} from "src/adapters/hasura/question.adapter"; - -@Module({ - imports: [HttpModule], - controllers: [QuestionController], - providers: [ - QumlQuestionService, - { provide: DikshaQuestionToken, useClass: QumlQuestionService }, - { provide: HasuraQuestionToken, useClass: QuestionService }, - ], -}) -export class QuestionModule {} diff --git a/src/adapters/diksha/quml.adapter.ts b/src/adapters/diksha/quml.adapter.ts deleted file mode 100644 index aeccfa6a..00000000 --- a/src/adapters/diksha/quml.adapter.ts +++ /dev/null @@ -1,511 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; -import { QuestionDto } from "src/Question/dto/question.dto"; -import { IServicelocator } from "../questionservicelocator"; -import e from "express"; -export const DikshaQuestionToken = "Question"; -@Injectable() -export class QumlQuestionService implements IServicelocator { - constructor(private httpService: HttpService) {} - url = process.env.DIKSHADEVBASEAPIURL; - public async getAllQuestions( - questionType: string, - subject: [string], - limit: string, - language: string, - medium: string, - bloomsLevel: [string], - topic: [string], - className: [string], - request: any - ) { - var axios = require("axios"); - - var data = { - request: { - filters: { - objectType: "Question", - status: ["Live"], - qType: questionType, - subject: subject, - language: language, - topic: topic, - gradeLevel: className, - medium: medium, - bloomsLevel: bloomsLevel, - }, - limit: limit, - }, - }; - - var config = { - method: "post", - url: `${this.url}/composite/v3/search`, - data: data, - }; - - const response = await axios(config); - const responseData = response.data.result.Question; - let arrayIds = responseData.map((e: any) => { - return e.identifier; - }); - - let questionArray = []; - for (let value of arrayIds) { - let questionData = this.getQuestions(value); - questionArray.push(await questionData); - } - - return new SuccessResponse({ - statusCode: 200, - message: "ok", - data: questionArray, - }); - } - - public async getQuestions(value: any) { - var axios = require("axios"); - - let config = { - method: "get", - url: `${this.url}/question/v1/read/${value}?fields=body,qType,answer,responseDeclaration,name,solutions,editorState,media,name,board,medium,gradeLevel,subject,topic,learningOutcome,marks,maxScore,bloomsLevel,compatibilityLevel,language,source`, - }; - - const response = await axios(config); - - const data = response?.data; - const final = data.result.question; - - const mappedResponse = { - body: final.body, - - instructions: final.instructions, - - feedback: final.feedback, - - topic: final.topic, - - subject: final.subject, - - class: final.gradeLevel, - - questionId: final.identifier, - - hints: final.hints, - - options: final.editorState.options, - - answer: final.answer, - - media: final.media, - - responseDeclaration: final.responseDeclaration, - - outcomeDeclaration: final.outcomeDeclaration, - - templateDeclaration: final.templateDeclaration, - - templateProcessing: final.templateProcessing, - - responseProcessing: final.responseProcessing, - - bloomsLevel: final.bloomsLevel, - - qlevel: final.qlevel, - - purpose: final.purpose, - - expectedDuration: final.expectedDuration, - - maxScore: final.maxScore, - - type: final.qType, - - visibility: final.visibility, - - isTemplate: final.isTemplate, - - interactions: final.interactions, - - solutionAvailable: final.solutionAvailable, - - scoringMode: final.scoringMode, - - qumlVersion: final.qumlVersion, - - totalTimeSpent: final.totalTimeSpent, - - avgTimeSpent: final.avgTimeSpent, - - numAttempts: final.numAttempts, - - numCorrectAttempts: final.numCorrectAttempts, - - numInCorrectAttempts: final.numInCorrectAttempts, - - numSkips: final.numSkips, - - source: final.source, - - learningOutcome: final.learningOutcome, - - compatibilityLevel: final.compatibilityLevel, - - language: final.language, - - avgRating: final.avgRating, - - totalRatings: final.totalRatings, - - examQuestionId: final.examQuestionId, - }; - - let res = new QuestionDto(mappedResponse); - return res; - } - - public async getAllQuestionsByQuestionIds( - questionIds: [string], - request: any - ) { - var axios = require("axios"); - let questionArray = []; - for (let value of questionIds) { - let config = { - method: "get", - url: `${this.url}/question/v1/read/${value}?fields=body,qType,answer,responseDeclaration,name,solutions,editorState,media,name,board,medium,gradeLevel,subject,topic,learningOutcome,marks,maxScore,bloomsLevel,compatibilityLevel,language,source`, - }; - - const response = await axios(config); - const data = response?.data; - const final = data.result.question; - - const mappedResponse = { - body: final.body, - - instructions: final.instructions, - - feedback: final.feedback, - - topic: final.topic, - - subject: final.subject, - - class: final.gradeLevel, - - questionId: final.identifier, - - hints: final.hints, - - options: final.editorState.options, - - answer: final.answer, - - media: final.media, - - responseDeclaration: final.responseDeclaration, - - outcomeDeclaration: final.outcomeDeclaration, - - templateDeclaration: final.templateDeclaration, - - templateProcessing: final.templateProcessing, - - responseProcessing: final.responseProcessing, - - bloomsLevel: final.bloomsLevel, - - qlevel: final.qlevel, - - purpose: final.purpose, - - expectedDuration: final.expectedDuration, - - maxScore: final.maxScore, - - type: final.qType, - - visibility: final.visibility, - - isTemplate: final.isTemplate, - - interactions: final.interactions, - - solutionAvailable: final.solutionAvailable, - - scoringMode: final.scoringMode, - - qumlVersion: final.qumlVersion, - - totalTimeSpent: final.totalTimeSpent, - - avgTimeSpent: final.avgTimeSpent, - - numAttempts: final.numAttempts, - - numCorrectAttempts: final.numCorrectAttempts, - - numInCorrectAttempts: final.numInCorrectAttempts, - - numSkips: final.numSkips, - - source: final.source, - - learningOutcome: final.learningOutcome, - - compatibilityLevel: final.compatibilityLevel, - - language: final.language, - - avgRating: final.avgRating, - - totalRatings: final.totalRatings, - - examQuestionId: final.examQuestionId, - }; - - let res = new QuestionDto(mappedResponse); - questionArray.push(res); - } - - return new SuccessResponse({ - statusCode: 200, - message: "ok", - data: questionArray, - }); - } - - public async getSubjectList(gradeLevel: string) { - try { - var axios = require("axios"); - let subjects = Array; - var config = { - method: "get", - url: "https://diksha.gov.in/api/framework/v1/read/mh_k-12_1?categories=board,gradeLevel,medium,class,subject", - headers: { - "Content-Type": "application/json", - }, - }; - const responseData = await axios(config); - const categories = responseData.data.result.framework.categories; - if (typeof categories !== "undefined" && categories.length > 0) { - const grades = categories.find((o) => o.code === "gradeLevel"); - let terms = grades.terms; - if (typeof terms !== "undefined" && terms.length > 0) { - let associations = terms.find((o) => o.code === gradeLevel); - subjects = associations.associations; - } - } - - return new SuccessResponse({ - statusCode: 200, - message: "ok", - data: subjects, - }); - } catch (e) { - return `${e}`; - } - } - public async getTopicsList(subject: string) { - try { - var axios = require("axios"); - var data = { - request: { - filters: { - objectType: "Question", - status: ["Live"], - subject: [subject], - }, - }, - }; - - var config = { - method: "post", - url: "https://vdn.diksha.gov.in/action/composite/v3/search", - headers: { - "Content-Type": "application/json", - }, - data: data, - }; - - const responseData = await axios(config); - const categories = responseData.data.result.Question; - const topicList = categories.map((e: any) => { - return e.se_topics[0]; - }); - const subjectTopicList = [...new Set(topicList)]; - return new SuccessResponse({ - statusCode: 200, - message: "ok", - data: subjectTopicList, - }); - } catch (e) { - return `${e}`; - } - } - public async getOneQuestion(questionId: string, request: any) { - var axios = require("axios"); - - let config = { - method: "get", - url: `${this.url}/question/v1/read/${questionId}?fields=body,qType,answer,responseDeclaration,name,solutions,editorState,media,name,board,medium,gradeLevel,subject,topic,learningOutcome,marks,maxScore,bloomsLevel,compatibilityLevel,language,source`, - }; - - const response = await axios(config); - - const data = response?.data; - - const final = data.result.question; - - const mappedResponse = { - body: final.body, - - instructions: final.instructions, - - feedback: final.feedback, - - topic: final.topic, - - subject: final.subject, - - class: final.gradeLevel, - - questionId: final.identifier, - - hints: final.hints, - - options: final.editorState.options, - - answer: final.answer, - - media: final.media, - - responseDeclaration: final.responseDeclaration, - - outcomeDeclaration: final.outcomeDeclaration, - - templateDeclaration: final.templateDeclaration, - - templateProcessing: final.templateProcessing, - - responseProcessing: final.responseProcessing, - - bloomsLevel: final.bloomsLevel, - - qlevel: final.qlevel, - - purpose: final.purpose, - - expectedDuration: final.expectedDuration, - - maxScore: final.maxScore, - - type: final.qType, - - visibility: final.visibility, - - isTemplate: final.isTemplate, - - interactions: final.interactions, - - solutionAvailable: final.solutionAvailable, - - scoringMode: final.scoringMode, - - qumlVersion: final.qumlVersion, - - totalTimeSpent: final.totalTimeSpent, - - avgTimeSpent: final.avgTimeSpent, - - numAttempts: final.numAttempts, - - numCorrectAttempts: final.numCorrectAttempts, - - numInCorrectAttempts: final.numInCorrectAttempts, - - numSkips: final.numSkips, - - source: final.source, - - learningOutcome: final.learningOutcome, - - compatibilityLevel: final.compatibilityLevel, - - language: final.language, - - avgRating: final.avgRating, - - totalRatings: final.totalRatings, - - examQuestionId: final.examQuestionId, - }; - - let res = new QuestionDto(mappedResponse); - return new SuccessResponse({ - statusCode: 200, - message: "ok", - data: res, - }); - } - - public async getCompetenciesList( - subject: string, - limit: string, - request: any - ) { - var axios = require("axios"); - try { - var data = { - request: { - filters: { - objectType: "Question", - status: ["Live"], - - subject: subject, - }, - limit: limit, - }, - }; - - var config = { - method: "post", - url: `${this.url}/composite/v3/search`, - data: data, - }; - - const response = await axios(config); - const responseData = response.data.result.Question; - const resData = responseData.map((e: any) => { - return e.bloomsLevel; - }); - let bloomsLevel = [...new Set(resData)]; - - return new SuccessResponse({ - statusCode: 200, - message: "ok", - data: bloomsLevel, - }); - } catch (e) { - return ` Competencies not found.`; - } - } - - getQuestion(questionId: string, request: any) {} - createQuestion(request: any, questionDto: QuestionDto) {} - updateQuestion(questionId: string, request: any, questionDto: QuestionDto) {} - filterQuestion( - limit: string, - body: string, - className: string, - maxScore: string, - questionId: string, - subject: string, - topic: string, - type: string, - page: number, - request: any - ) {} - bulkImport(request: any, questionDto: [Object]) {} -} diff --git a/src/adapters/hasura/question.adapter.ts b/src/adapters/hasura/question.adapter.ts deleted file mode 100644 index 8646dfba..00000000 --- a/src/adapters/hasura/question.adapter.ts +++ /dev/null @@ -1,464 +0,0 @@ -import { HttpService } from "@nestjs/axios"; -import { Injectable } from "@nestjs/common"; -import { SuccessResponse } from "src/success-response"; -import { QuestionDto } from "src/Question/dto/question.dto"; -import { IServicelocator } from "../questionservicelocator"; -export const HasuraQuestionToken = "HasuraQuestion"; -@Injectable() -export class QuestionService implements IServicelocator { - constructor(private httpService: HttpService) {} - - public async getQuestion(questionId: string, request: any) { - var axios = require("axios"); - - var data = { - query: `query GetQuestion($examQuestionId:uuid) { - question_by_pk(examQuestionId: $examQuestionId) { - answer - avgRating - avgTimeSpent - bloomsLevel - body - class - compatibilityLevel - created_at - examQuestionId - expectedDuration - feedback - hints - instructions - interactions - isTemplate - language - learningOutcome - maxScore - media - numAttempts - numCorrectAttempts - numInCorrectAttempts - numSkips - options - outcomeDeclaration - purpose - qlevel - questionId - qumlVersion - responseDeclaration - responseProcessing - scoringMode - solutionAvailable - source - subject - templateDeclaration - templateProcessing - topic - totalRatings - totalTimeSpent - type - updated_at - visibility - } - } - `, - variables: { examQuestionId: questionId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = [response.data.data.question_by_pk]; - const questionResponse = await this.mappedResponse(result); - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: questionResponse[0], - }); - } - public async createQuestion(request: any, questionDto: QuestionDto) { - var axios = require("axios"); - let query = ""; - Object.keys(questionDto).forEach((e) => { - if (questionDto[e] && questionDto[e] != "") { - if (Array.isArray(questionDto[e])) { - query += `${e}: ${JSON.stringify(questionDto[e])}, `; - } else { - query += `${e}: "${questionDto[e]}", `; - } - } - }); - - var data = { - query: `mutation CreateQuestion { - insert_question_one(object: {${query}}) { - examQuestionId - } - } - `, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data.insert_question_one; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateQuestion( - questionId: string, - request: any, - questionDto: QuestionDto - ) { - var axios = require("axios"); - - let query = ""; - Object.keys(questionDto).forEach((e) => { - if (questionDto[e] && questionDto[e] != "") { - if (Array.isArray(questionDto[e])) { - query += `${e}: ${JSON.stringify(questionDto[e])}, `; - } else { - query += `${e}: ${questionDto[e]}, `; - } - } - }); - - var data = { - query: `mutation UpdateQuestion($examQuestionId:uuid) { - update_question(where: {examQuestionId: {_eq: $examQuestionId}}, _set: {${query}}) { - affected_rows - } -}`, - variables: { - examQuestionId: questionId, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async filterQuestion( - limit: string, - body: string, - className: string, - maxScore: string, - questionId: string, - subject: string, - topic: string, - type: string, - page: number, - request: any - ) { - var axios = require("axios"); - - let offset = 0; - - if (page > 1) { - offset = parseInt(limit) * (page - 1); - } - - const searchData = { - body: body, - class: className, - maxScore: maxScore, - questionId: questionId, - subject: subject, - topic: topic, - type: type, - }; - - let query = ""; - Object.keys(searchData).forEach((e) => { - if (searchData[e] && searchData[e] != "") { - query += `${e}:{_eq:"${searchData[e]}"}`; - } - }); - - var data = { - query: `query SearchQuestion($limit:Int, $offset:Int) { - question_aggregate { - aggregate { - count - } - } - question(where:{ ${query}}, limit: $limit, offset: $offset,) { - answer - avgRating - avgTimeSpent - bloomsLevel - body - class - compatibilityLevel - created_at - examQuestionId - expectedDuration - feedback - hints - instructions - interactions - isTemplate - language - learningOutcome - maxScore - media - numAttempts - numCorrectAttempts - numInCorrectAttempts - numSkips - options - outcomeDeclaration - purpose - qlevel - questionId - qumlVersion - responseDeclaration - responseProcessing - scoringMode - solutionAvailable - source - subject - templateDeclaration - templateProcessing - topic - totalRatings - totalTimeSpent - type - updated_at - visibility - } - }`, - variables: { - limit: parseInt(limit), - offset: offset, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = response.data.data.question; - const questionResponse = await this.mappedResponse(result); - const count = response?.data?.data?.question_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: questionResponse, - }); - } - - public async bulkImport(request: any, questionDto: [Object]) { - let axios = require("axios"); - const result = Promise.all( - questionDto.map(async (data: any) => { - let query = ""; - Object.keys(data).forEach((e) => { - if (data[e] && data[e] != "") { - if (Array.isArray(data[e])) { - query += `${e}: ${JSON.stringify(data[e])}, `; - } else { - query += `${e}: ${data[e]}, `; - } - } - }); - - var createQuery = { - query: `mutation CreateQuestion { - insert_question_one(object: {${query}}) { - examQuestionId - } - } - `, - variables: {}, - }; - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: createQuery, - }; - - const response = await axios(config); - return await response.data; - }) - ); - const responseArray = await result; - return new SuccessResponse({ - statusCode: 200, - message: " Ok.", - data: responseArray, - }); - } - - public async getAllQuestions( - questionType: string, - subject: [string], - limit: string, - language: string, - medium: string, - bloomsLevel: [string], - topic: [string], - className: [string], - request: any - ) {} - - public async getAllQuestionsByQuestionIds( - questionIds: [string], - request: any - ) {} - public async getSubjectList(gradeLevel: string) {} - public async getTopicsList(subject: string) {} - - public async getOneQuestion(questionId: string, request: any) {} - - public async getCompetenciesList( - subject: string, - limit: string, - request: any - ) {} - public async mappedResponse(result: any) { - const questionResponse = result.map((item: any) => { - const questionMapping = { - id: item?.examQuestionId, - - examQuestionId: item?.examQuestionId, - - body: item?.body, - - instructions: item?.instructions, - - feedback: item?.feedback, - - topic: item?.topic, - - subject: item?.subject, - - class: item?.class, - - questionId: item?.questionId, - - hints: item?.hints, - - options: item?.options, - - media: item?.media, - - responseDeclaration: item?.responseDeclaration, - - outcomeDeclaration: item?.outcomeDeclaration, - - templateDeclaration: item?.templateDeclaration, - - templateProcessing: item?.templateProcessing, - - responseProcessing: item?.responseProcessing, - - bloomsLevel: item?.bloomsLevel, - - qlevel: item?.qlevel, - - purpose: item?.purpose, - - expectedDuration: item?.expectedDuration, - - maxScore: item?.maxScore, - - type: item?.type, - - visibility: item?.visibility, - - isTemplate: item?.isTemplate, - - interactions: item?.interactions, - - solutionAvailable: item?.solutionAvailable, - - scoringMode: item?.scoringMode, - - qumlVersion: item?.qumlVersion, - - totalTimeSpent: item?.totalTimeSpent, - - avgTimeSpent: item?.avgTimeSpent, - - numAttempts: item?.numAttempts, - - numCorrectAttempts: item?.numCorrectAttempts, - - numInCorrectAttempts: item?.numInCorrectAttempts, - - numSkips: item?.numSkips, - - source: item?.source, - - answer: item?.answer, - - learningOutcome: item?.learningOutcome, - - compatibilityLevel: item?.compatibilityLevel, - - language: item?.language, - - avgRating: item?.avgRating, - - totalRatings: item?.totalRatings, - }; - return new QuestionDto(questionMapping); - }); - - return questionResponse; - } -} diff --git a/src/app.module.ts b/src/app.module.ts index 9ef9fe1a..186c4928 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -7,7 +7,6 @@ import { AppService } from "./app.service"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { QuestionModule } from "./Question/question.module"; import { LikeModule } from "./like/like.module"; import { CommentModule } from "./comment/comment.module"; import { TrackAssessmentModule } from "./trackAssessment/trackassessment.module"; From 43b9e9abf2f34c92c5fac1314b4b1c3623acda5f Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:46:02 +0530 Subject: [PATCH 06/13] chore : removed like module --- src/adapters/hasura/hasura.module.ts | 3 - src/adapters/hasura/like.adapter.ts | 345 --------------------------- src/adapters/likeservicelocator.ts | 11 - src/app.module.ts | 1 - src/like/dto/like-search.dto.ts | 26 -- src/like/dto/like.dto.ts | 35 --- src/like/like.controller.ts | 121 ---------- src/like/like.module.ts | 12 - src/like/likeadapter.ts | 18 -- 9 files changed, 572 deletions(-) delete mode 100644 src/adapters/hasura/like.adapter.ts delete mode 100644 src/adapters/likeservicelocator.ts delete mode 100644 src/like/dto/like-search.dto.ts delete mode 100644 src/like/dto/like.dto.ts delete mode 100644 src/like/like.controller.ts delete mode 100644 src/like/like.module.ts delete mode 100644 src/like/likeadapter.ts diff --git a/src/adapters/hasura/hasura.module.ts b/src/adapters/hasura/hasura.module.ts index f33e4be1..93ea618b 100644 --- a/src/adapters/hasura/hasura.module.ts +++ b/src/adapters/hasura/hasura.module.ts @@ -3,7 +3,6 @@ import { Module } from "@nestjs/common"; import { AttendanceHasuraService } from "./attendance.adapter"; import { HasuraCommentService } from "./comment.adapter"; import { HasuraConfigService } from "./config.adapter"; -import { HasuraLikeService } from "./like.adapter"; import { HasuraCohortService } from "./cohort.adapter"; import { HasuraCohortMembersService } from "./cohortMembers.adapter"; import { HasuraFieldsService } from "./fields.adapter"; @@ -18,7 +17,6 @@ import { HasuraUserService } from "./user.adapter"; HasuraCohortMembersService, HasuraCommentService, HasuraConfigService, - HasuraLikeService, HasuraFieldsService, FieldsService, HasuraUserService, @@ -29,7 +27,6 @@ import { HasuraUserService } from "./user.adapter"; HasuraCohortMembersService, HasuraCommentService, HasuraConfigService, - HasuraLikeService, HasuraFieldsService, HasuraUserService, ], diff --git a/src/adapters/hasura/like.adapter.ts b/src/adapters/hasura/like.adapter.ts deleted file mode 100644 index 0a6c1ecb..00000000 --- a/src/adapters/hasura/like.adapter.ts +++ /dev/null @@ -1,345 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; -import { LikeDto } from "src/like/dto/like.dto"; -import { LikeSearchDto } from "src/like/dto/like-search.dto"; -import { IServicelocator } from "../likeservicelocator"; -import jwt_decode from "jwt-decode"; -export const HasuraLikeToken = "HasuraLike"; -@Injectable() -export class HasuraLikeService implements IServicelocator { - constructor(private httpService: HttpService) {} - userUrl = `${process.env.BASEAPIURL}/User`; - - public async createLike(request: any, likeDto: LikeDto) { - const authToken = request.headers.authorization; - const decoded: any = jwt_decode(authToken); - let email = decoded.email; - let axios = require("axios"); - let userData = { - filters: { - email: { - eq: `${email}`, - }, - }, - }; - let searchData = { - method: "post", - url: `${this.userUrl}/search`, - headers: { - Authorization: request.headers.authorization, - }, - data: userData, - }; - const resData = await axios(searchData); - const resultData = resData.data[0]; - likeDto.userId = resultData.osid; - const likeSchema = new LikeDto(likeDto); - - let query = ""; - Object.keys(likeDto).forEach((e) => { - if ( - likeDto[e] && - likeDto[e] != "" && - Object.keys(likeSchema).includes(e) - ) { - if (Array.isArray(likeDto[e])) { - query += `${e}: ${JSON.stringify(likeDto[e])}, `; - } else { - query += `${e}: "${likeDto[e]}", `; - } - } - }); - - var data = { - query: `mutation CreateLike { - insert_like_one(object: {${query}}) { - likeId - } - } - `, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data.insert_like_one; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateLike(id: string, request: any, likeDto: LikeDto) { - var axios = require("axios"); - const authToken = request.headers.authorization; - const decoded: any = jwt_decode(authToken); - let email = decoded.email; - let updateData = { - filters: { - email: { - eq: `${email}`, - }, - }, - }; - let configData = { - method: "post", - url: `${this.userUrl}/search`, - headers: { - Authorization: request.headers.authorization, - }, - data: updateData, - }; - const userResponse = await axios(configData); - const resultData = userResponse.data[0]; - likeDto.userId = resultData.osid; - const likeSchema = new LikeDto(likeDto); - let query = ""; - Object.keys(likeDto).forEach((e) => { - if ( - likeDto[e] && - likeDto[e] != "" && - Object.keys(likeSchema).includes(e) - ) { - if (Array.isArray(likeDto[e])) { - query += `${e}: ${JSON.stringify(likeDto[e])}, `; - } else { - query += `${e}: "${likeDto[e]}", `; - } - } - }); - - var data = { - query: `mutation UpdateLike($likeId:uuid) { - update_like(where: {likeId: {_eq: $likeId}}, _set: {${query}}) { - affected_rows - }}`, - variables: { - likeId: id, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async getLike(likeId: any, request: any) { - var axios = require("axios"); - - var data = { - query: `query GetLike($likeId:uuid!) { - like_by_pk(likeId: $likeId) { - userId - updated_at - type - likeId - created_at - contextId - context - } - } - `, - variables: { likeId: likeId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - let result = [response.data.data.like_by_pk]; - const likeDto = await this.mappedResponse(result); - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: likeDto[0], - }); - } - - public async searchLike(request: any, likeSearchDto: LikeSearchDto) { - var axios = require("axios"); - - let offset = 0; - if (likeSearchDto.page > 1) { - offset = parseInt(likeSearchDto.limit) * (likeSearchDto.page - 1); - } - - let filters = likeSearchDto.filters; - - Object.keys(likeSearchDto.filters).forEach((item) => { - Object.keys(likeSearchDto.filters[item]).forEach((e) => { - if (!e.startsWith("_")) { - filters[item][`_${e}`] = filters[item][e]; - delete filters[item][e]; - } - }); - }); - var data = { - query: `query SearchLike($filters:like_bool_exp,$limit:Int, $offset:Int) { - like_aggregate { - aggregate { - count - } - } - like(where:$filters, limit: $limit, offset: $offset,) { - userId - updated_at - type - likeId - created_at - contextId - context - } - }`, - variables: { - limit: parseInt(likeSearchDto.limit), - offset: offset, - filters: likeSearchDto.filters, - }, - }; - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = response.data.data.like; - const likeDto = await this.mappedResponse(result); - const count = response?.data?.data?.like_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: likeDto, - }); - } - public async getCountLike(contextId: string, context: string, request: any) { - var axios = require("axios"); - - var data = { - query: `query SearchLike($contextId:String,$context:String) { - like(where: {contextId: {_eq: $contextId}, context: {_eq: $context}}) { - userId - updated_at - type - likeId - created_at - contextId - context - } - }`, - variables: { - contextId: contextId, - context: context, - }, - }; - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - let result = response.data.data.like; - const likeDto = await this.mappedResponse(result); - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: likeDto.length, - }); - } - - public async deleteLike(likeId: string, request: any) { - var axios = require("axios"); - var data = { - query: `mutation UpdateLike($likeId:uuid) { - delete_like(where: {likeId: {_eq: $likeId}}) { - affected_rows - }}`, - variables: { - likeId: likeId, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async mappedResponse(result: any) { - const likeResponse = result.map((obj: any) => { - const likeMapping = { - id: obj?.likeId ? `${obj.likeId}` : "", - likeId: obj?.likeId ? `${obj.likeId}` : "", - contextId: obj?.contextId ? `${obj.contextId}` : "", - context: obj?.context ? `${obj.context}` : "", - userId: obj?.userId ? `${obj.userId}` : "", - type: obj?.type ? `${obj.type}` : "", - createdAt: obj?.created_at ? `${obj.created_at}` : "", - updatedAt: obj?.updated_at ? `${obj.updated_at}` : "", - }; - return new LikeDto(likeMapping); - }); - - return likeResponse; - } -} diff --git a/src/adapters/likeservicelocator.ts b/src/adapters/likeservicelocator.ts deleted file mode 100644 index d5728291..00000000 --- a/src/adapters/likeservicelocator.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { LikeSearchDto } from "src/like/dto/like-search.dto"; -import { LikeDto } from "src/like/dto/like.dto"; - -export interface IServicelocator { - getLike(likeId: string, request: any); - createLike(request: any, likeDto: LikeDto); - updateLike(likeId: string, request: any, likeDto: LikeDto); - searchLike(request: any, likeSearchDto: LikeSearchDto); - getCountLike(contextId: string, context: string, request: any); - deleteLike(likeId: string, request: any); -} diff --git a/src/app.module.ts b/src/app.module.ts index 186c4928..3e238aa2 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -7,7 +7,6 @@ import { AppService } from "./app.service"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { LikeModule } from "./like/like.module"; import { CommentModule } from "./comment/comment.module"; import { TrackAssessmentModule } from "./trackAssessment/trackassessment.module"; import { AssessmentSetModule } from "./assessmentset/assessmentset.module"; diff --git a/src/like/dto/like-search.dto.ts b/src/like/dto/like-search.dto.ts deleted file mode 100644 index 8991eb27..00000000 --- a/src/like/dto/like-search.dto.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class LikeSearchDto { - @ApiProperty({ - type: String, - description: "Limit", - }) - limit: string; - - @ApiProperty({ - type: Number, - description: "Page", - }) - page: number; - - @ApiProperty({ - type: Object, - description: "Filters", - }) - @ApiPropertyOptional() - filters: object; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/like/dto/like.dto.ts b/src/like/dto/like.dto.ts deleted file mode 100644 index 5b68ae13..00000000 --- a/src/like/dto/like.dto.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty } from "@nestjs/swagger"; - -export class LikeDto { - @Expose() - id: string; - - @Expose() - likeId: string; - - @ApiProperty({}) - @Expose() - contextId: string; - - @ApiProperty({}) - @Expose() - context: string; - - @Expose() - userId: string; - - @ApiProperty({}) - @Expose() - type: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/like/like.controller.ts b/src/like/like.controller.ts deleted file mode 100644 index 4cd105ee..00000000 --- a/src/like/like.controller.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { - Controller, - Get, - Post, - Body, - Put, - Param, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, - Query, - Delete, -} from "@nestjs/common"; -import { - ApiTags, - ApiBody, - ApiOkResponse, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiQuery, - ApiExcludeController, -} from "@nestjs/swagger"; -import { Request } from "@nestjs/common"; -import { LikeDto } from "./dto/like.dto"; -import { LikeSearchDto } from "./dto/like-search.dto"; -import { LikeAdapter } from "./likeadapter"; -// @ApiTags("Like") -@ApiExcludeController() -@Controller("like") -export class LikeController { - constructor(private likeAdapter: LikeAdapter) {} - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Like detail." }) - @SerializeOptions({ - strategy: "excludeAll", - }) - getLike(@Param("id") likeId: string, @Req() request: Request) { - return this.likeAdapter.buildLikeAdapter().getLike(likeId, request); - } - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Like has been created successfully.", - // }) - // @ApiBody({ type: LikeDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @UseInterceptors(ClassSerializerInterceptor) - public async createLike(@Req() request: Request, @Body() likeDto: LikeDto) { - return this.likeAdapter.buildLikeAdapter().createLike(request, likeDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Like has been updated successfully.", - // }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async updateLike( - @Param("id") likeId: string, - @Req() request: Request, - @Body() likeDto: LikeDto - ) { - return await this.likeAdapter - .buildLikeAdapter() - .updateLike(likeId, request, likeDto); - } - - @Post("/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Like list." }) - // @ApiBody({ type: LikeSearchDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async searchLike( - @Req() request: Request, - @Body() likeSearchDto: LikeSearchDto - ) { - return await this.likeAdapter - .buildLikeAdapter() - .searchLike(request, likeSearchDto); - } - - @Post("/getAllLikes") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "All Like." }) - @ApiQuery({ name: "contextId" }) - @ApiQuery({ name: "context" }) - public async getCountLike( - @Query("contextId") contextId: string, - @Query("context") context: string, - @Req() request: Request - ) { - return await this.likeAdapter - .buildLikeAdapter() - .getCountLike(contextId, context, request); - } - - @Delete("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Delete like. " }) - public async deleteLike( - @Param("id") likeId: string, - @Req() request: Request - ) { - return await this.likeAdapter - .buildLikeAdapter() - .deleteLike(likeId, request); - } -} diff --git a/src/like/like.module.ts b/src/like/like.module.ts deleted file mode 100644 index 72700db7..00000000 --- a/src/like/like.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { HttpModule } from "@nestjs/axios"; -import { CacheModule, Module } from "@nestjs/common"; -import { HasuraModule } from "src/adapters/hasura/hasura.module"; -import { LikeController } from "./like.controller"; -import { LikeAdapter } from "./likeadapter"; - -@Module({ - imports: [HasuraModule, HttpModule], - controllers: [LikeController], - providers: [LikeAdapter], -}) -export class LikeModule {} diff --git a/src/like/likeadapter.ts b/src/like/likeadapter.ts deleted file mode 100644 index b6b9e02a..00000000 --- a/src/like/likeadapter.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HasuraLikeService } from "src/adapters/hasura/like.adapter"; -import { IServicelocator } from "src/adapters/likeservicelocator"; - -@Injectable() -export class LikeAdapter { - constructor(private hasuraProvider: HasuraLikeService) {} - buildLikeAdapter(): IServicelocator { - let adapter: IServicelocator; - - switch (process.env.ADAPTERSOURCE) { - case "hasura": - adapter = this.hasuraProvider; - break; - } - return adapter; - } -} From 7d754a2c3d8e14a1313db65a55c290a99322a5ea Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:48:11 +0530 Subject: [PATCH 07/13] chore : removed comment module --- src/adapters/commentservicelocator.ts | 9 - src/adapters/hasura/comment.adapter.ts | 282 ------------------------- src/adapters/hasura/hasura.module.ts | 3 - src/app.module.ts | 3 +- src/comment/comment.controller.ts | 97 --------- src/comment/comment.module.ts | 12 -- src/comment/commentadapter.ts | 18 -- src/comment/dto/comment-search.dto.ts | 26 --- src/comment/dto/comment.dto.ts | 47 ----- 9 files changed, 1 insertion(+), 496 deletions(-) delete mode 100644 src/adapters/commentservicelocator.ts delete mode 100644 src/adapters/hasura/comment.adapter.ts delete mode 100644 src/comment/comment.controller.ts delete mode 100644 src/comment/comment.module.ts delete mode 100644 src/comment/commentadapter.ts delete mode 100644 src/comment/dto/comment-search.dto.ts delete mode 100644 src/comment/dto/comment.dto.ts diff --git a/src/adapters/commentservicelocator.ts b/src/adapters/commentservicelocator.ts deleted file mode 100644 index 6792cd76..00000000 --- a/src/adapters/commentservicelocator.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CommentSearchDto } from "src/comment/dto/comment-search.dto"; -import { CommentDto } from "src/comment/dto/comment.dto"; - -export interface IServicelocator { - getComment(commentId: string, request: any); - createComment(request: any, commentDto: CommentDto); - updateComment(commentId: string, request: any, commentDto: CommentDto); - searchComment(request: any, commentSearchDto: CommentSearchDto); -} diff --git a/src/adapters/hasura/comment.adapter.ts b/src/adapters/hasura/comment.adapter.ts deleted file mode 100644 index 10a5c4be..00000000 --- a/src/adapters/hasura/comment.adapter.ts +++ /dev/null @@ -1,282 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; -import { IServicelocator } from "../commentservicelocator"; -import { CommentDto } from "src/comment/dto/comment.dto"; -import { CommentSearchDto } from "src/comment/dto/comment-search.dto"; -import jwt_decode from "jwt-decode"; -export const HasuraCommentToken = "HasuraComment"; -@Injectable() -export class HasuraCommentService implements IServicelocator { - constructor(private httpService: HttpService) {} - userUrl = `${process.env.BASEAPIURL}/User`; - public async createComment(request: any, commentDto: CommentDto) { - var axios = require("axios"); - const authToken = request.headers.authorization; - const decoded: any = jwt_decode(authToken); - let email = decoded.email; - - let userData = { - filters: { - email: { - eq: `${email}`, - }, - }, - }; - let user = { - method: "post", - url: `${this.userUrl}/search`, - headers: { - Authorization: request.headers.authorization, - }, - data: userData, - }; - const resData = await axios(user); - const res = resData.data[0]; - commentDto.userId = res.osid; - const commentSchema = new CommentDto(commentDto); - let query = ""; - Object.keys(commentDto).forEach((e) => { - if ( - commentDto[e] && - commentDto[e] != "" && - Object.keys(commentSchema).includes(e) - ) { - if (Array.isArray(commentDto[e])) { - query += `${e}: ${JSON.stringify(commentDto[e])}, `; - } else { - query += `${e}: "${commentDto[e]}", `; - } - } - }); - - var data = { - query: `mutation CreateComment { - insert_comment_one(object: {${query}}) { - commentId - } - } - `, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data.insert_comment_one; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateComment(id: string, request: any, commentDto: CommentDto) { - var axios = require("axios"); - const authToken = request.headers.authorization; - const decoded: any = jwt_decode(authToken); - let email = decoded.email; - let updateData = { - filters: { - email: { - eq: `${email}`, - }, - }, - }; - let configData = { - method: "post", - url: `${this.userUrl}/search`, - headers: { - Authorization: request.headers.authorization, - }, - data: updateData, - }; - const userResponse = await axios(configData); - const resultData = userResponse.data[0]; - commentDto.userId = resultData.osid; - const commentSchema = new CommentDto(commentDto); - let query = ""; - Object.keys(commentDto).forEach((e) => { - if ( - commentDto[e] && - commentDto[e] != "" && - Object.keys(commentSchema).includes(e) - ) { - if (Array.isArray(commentDto[e])) { - query += `${e}: ${JSON.stringify(commentDto[e])}, `; - } else { - query += `${e}: "${commentDto[e]}", `; - } - } - }); - - var data = { - query: `mutation UpdateComment($commentId:uuid) { - update_comment(where: {commentId: {_eq: $commentId}}, _set: {${query}}) { - affected_rows - }}`, - variables: { - commentId: id, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async getComment(commentId: any, request: any) { - var axios = require("axios"); - - var data = { - query: `query GetComment($commentId:uuid!) { - comment_by_pk(commentId: $commentId) { - comment - commentId - context - contextId - created_at - parentId - privacy - status - updated_at - userId - } - } - `, - variables: { commentId: commentId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = await this.mappedResponse([ - response.data.data.comment_by_pk, - ]); - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result[0], - }); - } - - public async searchComment(request: any, commentSearchDto: CommentSearchDto) { - var axios = require("axios"); - - let offset = 0; - if (commentSearchDto.page > 1) { - offset = parseInt(commentSearchDto.limit) * (commentSearchDto.page - 1); - } - - let filters = commentSearchDto.filters; - - Object.keys(commentSearchDto.filters).forEach((item) => { - Object.keys(commentSearchDto.filters[item]).forEach((e) => { - if (!e.startsWith("_")) { - filters[item][`_${e}`] = filters[item][e]; - delete filters[item][e]; - } - }); - }); - var data = { - query: `query SearchComment($filters:comment_bool_exp,$limit:Int, $offset:Int) { - comment_aggregate { - aggregate { - count - } - } - comment(where:$filters, limit: $limit, offset: $offset,) { - comment - commentId - context - contextId - created_at - parentId - privacy - status - updated_at - userId - } - }`, - variables: { - limit: parseInt(commentSearchDto.limit), - offset: offset, - filters: commentSearchDto.filters, - }, - }; - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = await this.mappedResponse(response.data.data.comment); - const count = response?.data?.data?.comment_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: result, - }); - } - - public async mappedResponse(result: any) { - const commentResponse = result.map((obj: any) => { - const commentMapping = { - id: obj?.commentId ? `${obj.commentId}` : "", - commentId: obj?.commentId ? `${obj.commentId}` : "", - contextId: obj?.contextId ? `${obj.contextId}` : "", - context: obj?.context ? `${obj.context}` : "", - userId: obj?.userId ? `${obj.userId}` : "", - comment: obj?.comment ? `${obj.comment}` : "", - privacy: obj?.privacy ? `${obj.privacy}` : "", - parentId: obj?.parentId ? `${obj.parentId}` : "", - status: obj?.status ? `${obj.status}` : "", - createdAt: obj?.created_at ? `${obj.created_at}` : "", - updatedAt: obj?.updated_at ? `${obj.updated_at}` : "", - }; - return new CommentDto(commentMapping); - }); - - return commentResponse; - } -} diff --git a/src/adapters/hasura/hasura.module.ts b/src/adapters/hasura/hasura.module.ts index 93ea618b..a9f65f8c 100644 --- a/src/adapters/hasura/hasura.module.ts +++ b/src/adapters/hasura/hasura.module.ts @@ -1,7 +1,6 @@ import { HttpModule } from "@nestjs/axios"; import { Module } from "@nestjs/common"; import { AttendanceHasuraService } from "./attendance.adapter"; -import { HasuraCommentService } from "./comment.adapter"; import { HasuraConfigService } from "./config.adapter"; import { HasuraCohortService } from "./cohort.adapter"; import { HasuraCohortMembersService } from "./cohortMembers.adapter"; @@ -15,7 +14,6 @@ import { HasuraUserService } from "./user.adapter"; AttendanceHasuraService, HasuraCohortService, HasuraCohortMembersService, - HasuraCommentService, HasuraConfigService, HasuraFieldsService, FieldsService, @@ -25,7 +23,6 @@ import { HasuraUserService } from "./user.adapter"; AttendanceHasuraService, HasuraCohortService, HasuraCohortMembersService, - HasuraCommentService, HasuraConfigService, HasuraFieldsService, HasuraUserService, diff --git a/src/app.module.ts b/src/app.module.ts index 3e238aa2..6148a71e 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -5,10 +5,9 @@ import { AppService } from "./app.service"; // import { MulterModule } from "@nestjs/platform-express/multer"; // Below modules not in use for Shiksha 2.0 +import { TrackAssessmentModule } from "./trackAssessment/trackassessment.module"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { CommentModule } from "./comment/comment.module"; -import { TrackAssessmentModule } from "./trackAssessment/trackassessment.module"; import { AssessmentSetModule } from "./assessmentset/assessmentset.module"; import { MentorTrackingModule } from "./mentorTracking/mentorTracking.module"; import { MonitorTrackingModule } from "./monitorTracking/monitorTracking.module"; diff --git a/src/comment/comment.controller.ts b/src/comment/comment.controller.ts deleted file mode 100644 index 42aac031..00000000 --- a/src/comment/comment.controller.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { - Controller, - Get, - Post, - Body, - Put, - Param, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, -} from "@nestjs/common"; -import { - ApiTags, - ApiBody, - ApiOkResponse, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiExcludeController, -} from "@nestjs/swagger"; -import { Request } from "@nestjs/common"; -import { CommentDto } from "./dto/comment.dto"; -import { CommentSearchDto } from "./dto/comment-search.dto"; -import { IServicelocator } from "src/adapters/commentservicelocator"; -import { CommentAdapter } from "./commentadapter"; -// @ApiTags("Comment") -@ApiExcludeController() -@Controller("comment") -export class CommentController implements IServicelocator { - constructor(private commentAdapter: CommentAdapter) {} - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Comment detail." }) - @SerializeOptions({ - strategy: "excludeAll", - }) - getComment(@Param("id") commentId: string, @Req() request: Request) { - return this.commentAdapter - .buildCommentAdapter() - .getComment(commentId, request); - } - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Comment has been created successfully.", - // }) - // @ApiBody({ type: CommentDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async createComment( - @Req() request: Request, - @Body() commentDto: CommentDto - ) { - return this.commentAdapter - .buildCommentAdapter() - .createComment(request, commentDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Comment has been updated successfully.", - // }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async updateComment( - @Param("id") commentId: string, - @Req() request: Request, - @Body() commentDto: CommentDto - ) { - return this.commentAdapter - .buildCommentAdapter() - .updateComment(commentId, request, commentDto); - } - - @Post("/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Comment list." }) - // @ApiBody({ type: CommentSearchDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async searchComment( - @Req() request: Request, - @Body() CommentSearchDto: CommentSearchDto - ) { - return this.commentAdapter - .buildCommentAdapter() - .searchComment(request, CommentSearchDto); - } -} diff --git a/src/comment/comment.module.ts b/src/comment/comment.module.ts deleted file mode 100644 index ec978896..00000000 --- a/src/comment/comment.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { HttpModule } from "@nestjs/axios"; -import { CacheModule, Module } from "@nestjs/common"; -import { HasuraModule } from "src/adapters/hasura/hasura.module"; -import { CommentController } from "./comment.controller"; -import { CommentAdapter } from "./commentadapter"; - -@Module({ - imports: [HasuraModule, HttpModule], - controllers: [CommentController], - providers: [CommentAdapter], -}) -export class CommentModule {} diff --git a/src/comment/commentadapter.ts b/src/comment/commentadapter.ts deleted file mode 100644 index 3a6953bd..00000000 --- a/src/comment/commentadapter.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { IServicelocator } from "src/adapters/commentservicelocator"; -import { HasuraCommentService } from "src/adapters/hasura/comment.adapter"; - -@Injectable() -export class CommentAdapter { - constructor(private hasuraProvider: HasuraCommentService) {} - buildCommentAdapter(): IServicelocator { - let adapter: IServicelocator; - - switch (process.env.ADAPTERSOURCE) { - case "hasura": - adapter = this.hasuraProvider; - break; - } - return adapter; - } -} diff --git a/src/comment/dto/comment-search.dto.ts b/src/comment/dto/comment-search.dto.ts deleted file mode 100644 index 0cb5dd7b..00000000 --- a/src/comment/dto/comment-search.dto.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class CommentSearchDto { - @ApiProperty({ - type: String, - description: "Limit", - }) - limit: string; - - @ApiProperty({ - type: Number, - description: "Page", - }) - page: number; - - @ApiProperty({ - type: Object, - description: "Filters", - }) - @ApiPropertyOptional() - filters: object; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/comment/dto/comment.dto.ts b/src/comment/dto/comment.dto.ts deleted file mode 100644 index 0782fa3d..00000000 --- a/src/comment/dto/comment.dto.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty } from "@nestjs/swagger"; - -export class CommentDto { - @Expose() - id: string; - - @Expose() - commentId: string; - - @ApiProperty({}) - @Expose() - contextId: string; - - @ApiProperty({}) - @Expose() - context: string; - - @Expose() - userId: string; - - @ApiProperty({}) - @Expose() - comment: string; - - @ApiProperty({}) - @Expose() - privacy: string; - - @ApiProperty({}) - @Expose() - parentId: string; - - @ApiProperty({}) - @Expose() - status: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} From 2618c4755e497e3d66612781bd410950a7ec61e2 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:49:24 +0530 Subject: [PATCH 08/13] chore : removed track assessment module --- .../hasura/trackassessment.adapter.ts | 309 ------------------ src/app.module.ts | 1 - .../dto/trackassessment.dto.ts | 97 ------ src/trackAssessment/enums/statuses.enum.ts | 5 - .../trackassessment.controller.ts | 109 ------ src/trackAssessment/trackassessment.module.ts | 12 - 6 files changed, 533 deletions(-) delete mode 100644 src/adapters/hasura/trackassessment.adapter.ts delete mode 100644 src/trackAssessment/dto/trackassessment.dto.ts delete mode 100644 src/trackAssessment/enums/statuses.enum.ts delete mode 100644 src/trackAssessment/trackassessment.controller.ts delete mode 100644 src/trackAssessment/trackassessment.module.ts diff --git a/src/adapters/hasura/trackassessment.adapter.ts b/src/adapters/hasura/trackassessment.adapter.ts deleted file mode 100644 index 4d8be164..00000000 --- a/src/adapters/hasura/trackassessment.adapter.ts +++ /dev/null @@ -1,309 +0,0 @@ -import { HttpException, Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { AxiosResponse } from "axios"; -import { catchError, map } from "rxjs"; -import { SuccessResponse } from "src/success-response"; -import { TrackAssessmentDto } from "src/trackAssessment/dto/trackassessment.dto"; -import { ErrorResponse } from "src/error-response"; -import { Status } from "../../trackAssessment/enums/statuses.enum"; - -@Injectable() -export class TrackAssessmentService { - constructor(private httpService: HttpService) {} - - url = process.env.DIKSHADEVBASEAPIURL; - public async getAssessment(assessmentId: any, request: any) { - var axios = require("axios"); - try { - var data = { - query: `query GetTrackAssessment($trackAssessmentId:uuid) { - trackassessment(where: {trackAssessmentId: {_eq: $trackAssessmentId}}) { - answersheet - filter - created_at - updated_at - trackAssessmentId - questions - score - totalScore - source - studentId - teacherId - groupId - subject - date - type - status - } - }`, - variables: { - trackAssessmentId: assessmentId, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = await this.mappedResponse( - response.data.data.trackassessment - ); - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } catch (e) { - return `${e}`; - } - } - - public async createAssessment( - request: any, - assessmentDto: TrackAssessmentDto - ) { - let variables: object; - try { - const axios = require("axios"); - if (!assessmentDto.status) { - // let's set it as "COMPLETED" by default - assessmentDto.status = Status.COMPLETED; - } - if (assessmentDto.status == Status.COMPLETED) { - const answer = JSON.stringify(assessmentDto.answersheet); - const jsonObj = JSON.parse(answer); - const params = JSON.parse(jsonObj); - - let sum = 0; - params.children.map((e: any) => { - sum += e.score; - return sum; - }); - assessmentDto.score = sum.toString(); - - const questionIds = assessmentDto.questions; - const totalScoreArray = []; - for (const value of questionIds) { - const config = { - method: "get", - url: `${this.url}/question/v1/read/${value}?fields=maxScore`, - }; - const response = await axios(config); - const data = response?.data; - const final = data.result.question; - - const scoreResponse = { - maxScore: final.maxScore, - }; - totalScoreArray.push(scoreResponse); - } - let totalScore = 0; - totalScoreArray.map((e: any) => { - totalScore += e.maxScore; - return totalScore; - }); - assessmentDto.totalScore = totalScore.toString(); - - variables = { - filter: assessmentDto.filter, - source: assessmentDto.source, - questions: assessmentDto.questions.toString(), - studentId: assessmentDto.studentId, - teacherId: assessmentDto.teacherId, - type: assessmentDto.type, - answersheet: assessmentDto.answersheet, - score: assessmentDto.score, - totalScore: assessmentDto.totalScore, - groupId: assessmentDto.groupId, - subject: assessmentDto.subject, - status: assessmentDto.status, - }; - } else { - variables = { - filter: null, - source: null, - questions: null, - studentId: assessmentDto.studentId, - teacherId: assessmentDto.teacherId, - type: assessmentDto.type, - answersheet: null, - score: null, - totalScore: null, - groupId: assessmentDto.groupId, - subject: null, - status: assessmentDto.status, - }; - } - - const data = { - query: `mutation CreateTrackAssessment($filter: String, $score: String, $totalScore:String, $source: String, $questions: String, $studentId: String, $teacherId: String, $type: String, $answersheet: String,$groupId:String, $subject:String, $status: String) { - insert_trackassessment_one(object:{filter: $filter, score: $score, totalScore:$totalScore, source: $source, questions: $questions, studentId: $studentId, teacherId: $teacherId, type: $type, answersheet: $answersheet,groupId:$groupId,subject:$subject, status: $status}) { - trackAssessmentId - } - }`, - variables: variables, - }; - - const config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: response.data, - }); - } catch (e) { - return `${e}`; - } - } - - public async searchAssessment( - fromDate: string, - toDate: string, - limit: string, - source: string, - studentId: string, - teacherId: string, - groupId: string, - subject: string, - page: number, - request: any - ) { - var axios = require("axios"); - - let offset = 0; - - if (page > 1) { - offset = parseInt(limit) * (page - 1); - } - let searchData = { - fromDate, - toDate, - source, - studentId, - teacherId, - groupId, - subject, - }; - - let query = ""; - if (searchData.fromDate && searchData.toDate) { - query += `date:{_gte: "${searchData.fromDate}"}, _and: {date: {_lte: "${searchData.toDate}"}} `; - } - const objectKeys = Object.keys(searchData); - objectKeys.forEach((e, index) => { - if ( - searchData[e] && - searchData[e] != "" && - !["fromDate", "toDate"].includes(e) - ) { - query += `${e}:{_eq:"${searchData[e]}"}`; - if (index !== objectKeys.length - 1) { - query += " "; - } - } - }); - - var data = { - query: `query searchTrackAssessment($offset:Int,$limit:Int) { - trackassessment_aggregate { - aggregate { - count - } - } - trackassessment(limit: $limit, offset: $offset, where: {${query}}) { - answersheet - filter - created_at - updated_at - trackAssessmentId - questions - score - totalScore - source - studentId - teacherId - groupId - subject - date - type - status - } -}`, - variables: { - limit: parseInt(limit), - offset: offset, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = await this.mappedResponse( - response.data.data.trackassessment - ); - const count = - response?.data?.data?.trackassessment_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: result, - }); - } - - public async mappedResponse(result: any) { - const trackAssessmentResponse = result.map((obj: any) => { - const trackAssessmentMapping = { - id: obj?.trackAssessmentId ? `${obj.trackAssessmentId}` : "", - trackAssessmentId: obj?.trackAssessmentId - ? `${obj.trackAssessmentId}` - : "", - filter: obj?.filter ? `${obj.filter}` : "", - type: obj?.type ? `${obj.type}` : "", - questions: obj?.questions ? obj.questions : "", - source: obj?.source ? `${obj.source}` : "", - answersheet: obj?.answersheet ? `${obj.answersheet}` : "", - score: obj?.score ? `${obj.score}` : "", - totalScore: obj?.totalScore ? `${obj.totalScore}` : "", - studentId: obj?.studentId ? `${obj.studentId}` : "", - teacherId: obj?.teacherId ? `${obj.teacherId}` : "", - groupId: obj?.groupId ? `${obj.groupId}` : "", - subject: obj?.subject ? `${obj.subject}` : "", - date: obj?.date ? `${obj.date}` : "", - status: obj?.status ? `${obj.status}` : "", - createdAt: obj?.created_at ? `${obj.created_at}` : "", - updatedAt: obj?.updated_at ? `${obj.updated_at}` : "", - }; - return new TrackAssessmentDto(trackAssessmentMapping); - }); - - return trackAssessmentResponse; - } -} diff --git a/src/app.module.ts b/src/app.module.ts index 6148a71e..7e61be4b 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -5,7 +5,6 @@ import { AppService } from "./app.service"; // import { MulterModule } from "@nestjs/platform-express/multer"; // Below modules not in use for Shiksha 2.0 -import { TrackAssessmentModule } from "./trackAssessment/trackassessment.module"; /* import { ConfigurationModule } from "./configs/configuration.module"; import { AssessmentSetModule } from "./assessmentset/assessmentset.module"; diff --git a/src/trackAssessment/dto/trackassessment.dto.ts b/src/trackAssessment/dto/trackassessment.dto.ts deleted file mode 100644 index add9eb94..00000000 --- a/src/trackAssessment/dto/trackassessment.dto.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; -import { IsIn, IsNotEmpty, IsString } from "class-validator"; -import { Status } from "../enums/statuses.enum"; - -export class TrackAssessmentDto { - @Expose() - id: string; - - @Expose() - trackAssessmentId: string; - - @ApiProperty({ - description: "JSON string of filters selected for the assessment ", - }) - @Expose() - filter: string; - - @ApiProperty({ - description: "Assessment type, spot assessment or exam", - }) - @Expose() - type: string; - - @ApiPropertyOptional({ - description: "Array of question Id's against the assessment is given", - }) - @Expose() - questions: [string]; - - @ApiPropertyOptional({ - description: "Assessment questions source", - }) - @Expose() - source: string; - - @ApiProperty({ - description: - "JSON encoded QUML player response against the given questions of the assessment", - }) - @Expose() - answersheet: string; - - @Expose() - score: string; - - @ApiProperty({ - description: "student Id who has given assessment", - }) - @Expose() - studentId: string; - - @ApiProperty({ - description: "Teacher Id who has assigned the assessment", - }) - @Expose() - teacherId: string; - - @ApiProperty({ - description: "GroupId of teacher", - }) - @Expose() - groupId: string; - - @ApiProperty({ - description: "subject", - }) - @Expose() - subject: string; - - @Expose() - totalScore: string; - - @Expose() - date: string; - - @IsString() - @IsIn([Status.NONE, Status.COMPLETED, Status.ABSENT]) - @ApiProperty({ - description: - "Assessment Status - whether student was absent or he has completed the assessment.", - enum: [Status.COMPLETED, Status.ABSENT], - required: true, - }) - @Expose() - status: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/trackAssessment/enums/statuses.enum.ts b/src/trackAssessment/enums/statuses.enum.ts deleted file mode 100644 index fe0033f8..00000000 --- a/src/trackAssessment/enums/statuses.enum.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum Status { - NONE = "", // can be empty to maintain backward compatibility - COMPLETED = "COMPLETED", - ABSENT = "ABSENT", -} diff --git a/src/trackAssessment/trackassessment.controller.ts b/src/trackAssessment/trackassessment.controller.ts deleted file mode 100644 index 88c1ff9d..00000000 --- a/src/trackAssessment/trackassessment.controller.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { - ApiTags, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiBody, - ApiQuery, - ApiOkResponse, - ApiExcludeController, -} from "@nestjs/swagger"; -import { - Controller, - Get, - Param, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, - Request, - Post, - Body, - Query, - UsePipes, - ValidationPipe, -} from "@nestjs/common"; -import { TrackAssessmentService } from "src/adapters/hasura/trackassessment.adapter"; -import { TrackAssessmentDto } from "./dto/trackassessment.dto"; -import { isUUID } from "class-validator"; - -// @ApiTags("Track Assessment") -@ApiExcludeController() -@Controller("trackassessment") -export class AssessmentController { - constructor(private service: TrackAssessmentService) {} - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Track Assessment has been created successfully.", - // }) - // @ApiBody({ type: TrackAssessmentDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @UsePipes(new ValidationPipe({})) - public async createAssessment( - @Req() request: Request, - @Body() assessmentDto: TrackAssessmentDto - ) { - return this.service.createAssessment(request, assessmentDto); - } - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiCreatedResponse({ description: "Track Assessment detail" }) - @ApiForbiddenResponse({ description: "Forbidden" }) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async getAssessment( - @Param("id") assessmentId: string, - @Req() request: Request - ) { - return this.service.getAssessment(assessmentId, request); - } - - @Post("/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Track Assessment list." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @SerializeOptions({ - strategy: "excludeAll", - }) - // @ApiQuery({ name: "fromDate", required: false }) - // @ApiQuery({ name: "toDate", required: false }) - // @ApiQuery({ name: "limit", required: false }) - // @ApiQuery({ name: "source", required: false }) - // @ApiQuery({ name: "studentId", required: false }) - // @ApiQuery({ name: "teacherId", required: false }) - // @ApiQuery({ name: "groupId", required: false }) - // @ApiQuery({ name: "subject", required: false }) - // @ApiQuery({ name: "page", required: false }) - public async searchAssessment( - @Query("fromDate") date: string, - @Query("toDate") toDate: string, - @Query("limit") limit: string, - @Query("source") source: string, - @Query("studentId") studentId: string, - @Query("teacherId") teacherId: string, - @Query("groupId") groupId: string, - @Query("subject") subject: string, - @Query("page") page: number, - @Req() request: Request - ) { - return await this.service.searchAssessment( - date, - toDate, - limit, - source, - studentId, - teacherId, - groupId, - subject, - page, - request - ); - } -} diff --git a/src/trackAssessment/trackassessment.module.ts b/src/trackAssessment/trackassessment.module.ts deleted file mode 100644 index 86b4ec29..00000000 --- a/src/trackAssessment/trackassessment.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { CacheModule, Module } from "@nestjs/common"; -import { HttpModule } from "@nestjs/axios"; -import { ScheduleModule } from "@nestjs/schedule"; -import { TrackAssessmentService } from "src/adapters/hasura/trackassessment.adapter"; -import { AssessmentController } from "./trackassessment.controller"; - -@Module({ - imports: [HttpModule, ScheduleModule.forRoot()], - controllers: [AssessmentController], - providers: [TrackAssessmentService], -}) -export class TrackAssessmentModule {} From 4a7943dd2153cd53246db7f7bd3ac52cd1259d68 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:51:09 +0530 Subject: [PATCH 09/13] chore : removed assessment set module --- src/adapters/hasura/assessmentset.adapter.ts | 188 ------------------ src/app.module.ts | 1 - src/assessmentset/assessmentset.controller.ts | 91 --------- src/assessmentset/assessmentset.module.ts | 12 -- .../dto/assessmentset-search-dto.ts | 20 -- src/assessmentset/dto/assessmentset.dto.ts | 50 ----- 6 files changed, 362 deletions(-) delete mode 100644 src/adapters/hasura/assessmentset.adapter.ts delete mode 100644 src/assessmentset/assessmentset.controller.ts delete mode 100644 src/assessmentset/assessmentset.module.ts delete mode 100644 src/assessmentset/dto/assessmentset-search-dto.ts delete mode 100644 src/assessmentset/dto/assessmentset.dto.ts diff --git a/src/adapters/hasura/assessmentset.adapter.ts b/src/adapters/hasura/assessmentset.adapter.ts deleted file mode 100644 index e6c1bde8..00000000 --- a/src/adapters/hasura/assessmentset.adapter.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; -import { AssessmentsetDto } from "src/assessmentset/dto/assessmentset.dto"; -@Injectable() -export class AssessmentsetService { - constructor(private httpService: HttpService) {} - - public async createAssessmentSet( - request: any, - assessmentsetDto: AssessmentsetDto - ) { - var axios = require("axios"); - try { - var data = { - query: `mutation CreateAssessmentset($gradeType:String,$options:String,$title:String,$type:String,$typeDetails:String) { - insert_assessmentset_one(object: {gradeType: $gradeType, options: $options, title: $title, type: $type, typeDetails: $typeDetails}) { - assessmentsetId - } -}`, - variables: { - gradeType: assessmentsetDto.gradeType, - options: assessmentsetDto.options, - title: assessmentsetDto.title, - type: assessmentsetDto.type, - typeDetails: assessmentsetDto.typeDetails, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: response.data, - }); - } catch (e) { - return `${e}`; - } - } - public async getAssessmentset(assessmentsetId: any, request: any) { - var axios = require("axios"); - try { - var data = { - query: `query GetAssessmentset($assessmentsetId:uuid) { - assessmentset(where: {assessmentsetId: {_eq: $assessmentsetId}}) { - assessmentsetId - gradeType - title - options - type - typeDetails - created_at - updated_at - } - }`, - variables: { assessmentsetId: assessmentsetId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = await this.mappedResponse( - response.data.data.assessmentset - ); - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result[0], - }); - } catch (e) { - return `${e}`; - } - } - - public async searchAssessmentset( - limit: string, - assessmentsetId: string, - type: string, - title: string, - gradeType: string, - request: any - ) { - var axios = require("axios"); - try { - const searchData = { - assessmentsetId, - type, - title, - gradeType, - }; - - let query = ""; - Object.keys(searchData).forEach((e) => { - if (searchData[e] && searchData[e] != "") { - query += `${e}:{_eq:"${searchData[e]}"}`; - } - }); - - var data = { - query: `query GetAssessmentset($limit:Int) { - assessmentset_aggregate { - aggregate { - count - } - } - - assessmentset(limit:$limit,where: {${query}}) { - assessmentsetId - gradeType - title - options - type - typeDetails - created_at - updated_at - } - }`, - variables: { limit: parseInt(limit) }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = await this.mappedResponse(response.data.data.assessmentset); - - const count = - response?.data?.data?.assessmentset_aggregate?.aggregate?.count; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: result, - }); - } catch (e) { - return `${e}`; - } - } - - public async mappedResponse(result: any) { - const assessmentSetResponse = result.map((obj: any) => { - const assessmentSetMapping = { - id: obj?.assessmentsetId ? `${obj.assessmentsetId}` : "", - assessmentsetId: obj?.assessmentsetId ? `${obj.assessmentsetId}` : "", - title: obj?.title ? `${obj.title}` : "", - type: obj?.type ? obj.type : "", - typeDetails: obj?.typeDetails ? obj.typeDetails : "", - gradeType: obj?.gradeType ? `${obj.gradeType}` : "", - options: obj?.options ? `${obj.options}` : "", - createdAt: obj?.created_at ? `${obj.created_at}` : "", - updatedAt: obj?.updated_at ? `${obj.updated_at}` : "", - }; - return new AssessmentsetDto(assessmentSetMapping); - }); - - return assessmentSetResponse; - } -} diff --git a/src/app.module.ts b/src/app.module.ts index 7e61be4b..6fecf2f1 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -7,7 +7,6 @@ import { AppService } from "./app.service"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { AssessmentSetModule } from "./assessmentset/assessmentset.module"; import { MentorTrackingModule } from "./mentorTracking/mentorTracking.module"; import { MonitorTrackingModule } from "./monitorTracking/monitorTracking.module"; import { AnnouncementsModule } from "./announcements/announcements.module"; diff --git a/src/assessmentset/assessmentset.controller.ts b/src/assessmentset/assessmentset.controller.ts deleted file mode 100644 index 64e56e59..00000000 --- a/src/assessmentset/assessmentset.controller.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { - ApiTags, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiBody, - ApiQuery, - ApiExcludeController, -} from "@nestjs/swagger"; -import { - Controller, - Get, - Param, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, - Request, - Post, - Body, - Query, -} from "@nestjs/common"; -import { AssessmentsetDto } from "./dto/assessmentset.dto"; -import { AssessmentsetService } from "src/adapters/hasura/assessmentset.adapter"; - -// @ApiTags("Assessmentset") -@ApiExcludeController() -@Controller("assessmentset") -export class AssessmentsetController { - constructor(private service: AssessmentsetService) {} - - @Post("/assessmentset") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Assessment set has been created successfully.", - // }) - // @ApiBody({ type: AssessmentsetDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async createAssessmentSet( - @Req() request: Request, - @Body() assessmentsetDto: AssessmentsetDto - ) { - return this.service.createAssessmentSet(request, assessmentsetDto); - } - @Get("assessmentset/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiCreatedResponse({ description: "Assessment set detail" }) - @ApiForbiddenResponse({ description: "Forbidden" }) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async getAssessmentset( - @Param("id") assessmentsetId: string, - @Req() request: Request - ) { - return this.service.getAssessmentset(assessmentsetId, request); - } - - @Post("assessmentset/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Assessment set list." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @SerializeOptions({ - strategy: "excludeAll", - }) - @ApiQuery({ name: "limit", required: false }) - @ApiQuery({ name: "assessmentsetId", required: false }) - @ApiQuery({ name: "type", required: false }) - @ApiQuery({ name: "title", required: false }) - @ApiQuery({ name: "gradeType", required: false }) - public async searchAssessmentset( - @Req() request: Request, - @Query("limit") limit: string, - @Query("assessmentsetId") assessmentsetId: string, - @Query("type") type: string, - @Query("title") title: string, - @Query("gradeType") gradeType: string - ) { - return await this.service.searchAssessmentset( - limit, - assessmentsetId, - type, - title, - gradeType, - request - ); - } -} diff --git a/src/assessmentset/assessmentset.module.ts b/src/assessmentset/assessmentset.module.ts deleted file mode 100644 index f55d25f1..00000000 --- a/src/assessmentset/assessmentset.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Module } from "@nestjs/common"; -import { HttpModule } from "@nestjs/axios"; -import { ScheduleModule } from "@nestjs/schedule"; -import { AssessmentsetController } from "./assessmentset.controller"; -import { AssessmentsetService } from "src/adapters/hasura/assessmentset.adapter"; - -@Module({ - imports: [HttpModule, ScheduleModule.forRoot()], - controllers: [AssessmentsetController], - providers: [AssessmentsetService], -}) -export class AssessmentSetModule {} diff --git a/src/assessmentset/dto/assessmentset-search-dto.ts b/src/assessmentset/dto/assessmentset-search-dto.ts deleted file mode 100644 index 5fa957d3..00000000 --- a/src/assessmentset/dto/assessmentset-search-dto.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class AssessmentSetSearchDto { - @ApiProperty({ - type: String, - description: "Limit", - }) - limit: string; - - @ApiProperty({ - type: Object, - description: "Filters", - }) - @ApiPropertyOptional() - filters: object; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/assessmentset/dto/assessmentset.dto.ts b/src/assessmentset/dto/assessmentset.dto.ts deleted file mode 100644 index a18acbee..00000000 --- a/src/assessmentset/dto/assessmentset.dto.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class AssessmentsetDto { - @Expose() - id: string; - - @Expose() - assessmentsetId: string; - - @ApiProperty({ - description: "Assessment set title ", - }) - @Expose() - title: string; - - @ApiPropertyOptional({ - description: "Assessment set Type", - }) - @Expose() - type: string; - - @ApiProperty({ - description: "Assessmentset type, Ex - marks, boolean, grade", - }) - @Expose() - typeDetails: string; - - @ApiProperty({ - description: "Assessmentset type details", - }) - @Expose() - gradeType: string; - - @ApiProperty({ - description: "Extra data against assessment sent", - }) - @Expose() - options: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} From 6388730ba754209c8d6aa13bac356c1f027a9044 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:52:32 +0530 Subject: [PATCH 10/13] chore : removed mentor tracking module --- src/adapters/hasura/mentorTracking.adapter.ts | 311 ------------------ src/app.module.ts | 1 - src/mentorTracking/dto/feedback-create.dto.ts | 13 - src/mentorTracking/dto/mentorTracking.dto.ts | 70 ---- src/mentorTracking/dto/visitStatus.enum.ts | 4 - .../mentorTracking.controller.ts | 161 --------- src/mentorTracking/mentorTracking.module.ts | 11 - src/mentorTracking/utils/file-upload.utils.ts | 18 - 8 files changed, 589 deletions(-) delete mode 100644 src/adapters/hasura/mentorTracking.adapter.ts delete mode 100644 src/mentorTracking/dto/feedback-create.dto.ts delete mode 100644 src/mentorTracking/dto/mentorTracking.dto.ts delete mode 100644 src/mentorTracking/dto/visitStatus.enum.ts delete mode 100644 src/mentorTracking/mentorTracking.controller.ts delete mode 100644 src/mentorTracking/mentorTracking.module.ts delete mode 100644 src/mentorTracking/utils/file-upload.utils.ts diff --git a/src/adapters/hasura/mentorTracking.adapter.ts b/src/adapters/hasura/mentorTracking.adapter.ts deleted file mode 100644 index 8192a036..00000000 --- a/src/adapters/hasura/mentorTracking.adapter.ts +++ /dev/null @@ -1,311 +0,0 @@ -import { HttpService } from "@nestjs/axios"; -import { Injectable } from "@nestjs/common"; -import { SuccessResponse } from "src/success-response"; -import { MentorTrackingDto } from "src/mentorTracking/dto/mentorTracking.dto"; -import * as FormData from "form-data"; -import { FeedbackCreateDto } from "src/mentorTracking/dto/feedback-create.dto"; -@Injectable() -export class MentorTrackingService { - constructor(private httpService: HttpService) {} - - public async getMentorTracking(mentorId: string, request: any) { - var axios = require("axios"); - - var data = { - query: `query getMentorTracking($mentorTrackingId: uuid!) { - mentortracking(where: {mentorTrackingId: {_eq: $mentorTrackingId}}) { - mentorTrackingId - created_at - feedback - mentorId - scheduleVisitDate - status - teacherId - schoolId - updated_at - visitDate - lastVisited - } -}`, - variables: { mentorTrackingId: mentorId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = await this.mappedResponse(response.data.data.mentortracking); - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async createMentorTracking( - request: any, - mentorTrackingDto: MentorTrackingDto - ) { - var axios = require("axios"); - - let query = ""; - Object.keys(mentorTrackingDto).forEach((e) => { - if (mentorTrackingDto[e] && mentorTrackingDto[e] != "") { - query += `${e}: "${mentorTrackingDto[e]}", `; - } - }); - var data = { - query: `mutation createMentorTracking { - insert_mentortracking_one(object: {${query}}) { - mentorTrackingId - } -}`, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data.insert_mentortracking_one; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateMentorTracking( - mentorTrackingId: string, - request: any, - mentorTrackingDto: MentorTrackingDto - ) { - const mentorSchema = new MentorTrackingDto(mentorTrackingDto); - let query = ""; - Object.keys(mentorTrackingDto).forEach((e) => { - if ( - mentorTrackingDto[e] && - mentorTrackingDto[e] != "" && - Object.keys(mentorSchema).includes(e) - ) { - if (Array.isArray(mentorTrackingDto[e])) { - query += `${e}: ${JSON.stringify(mentorTrackingDto[e])}, `; - } else { - query += `${e}: "${mentorTrackingDto[e]}", `; - } - } - }); - - var axios = require("axios"); - var data = { - query: `mutation updateMentorTracking($mentorTrackingId: uuid) { - update_mentortracking(where: {mentorTrackingId: {_eq: $mentorTrackingId}}, _set: {${query}}) { - affected_rows - } -}`, - variables: { - mentorTrackingId: mentorTrackingId, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async feedback( - mentorTrackingId: string, - feedbackCreateDto: FeedbackCreateDto, - request: any - ) { - let mentorTrackingDto = feedbackCreateDto; - const mentorSchema = new FeedbackCreateDto(mentorTrackingDto); - let query = ""; - Object.keys(mentorTrackingDto).forEach((e) => { - if ( - mentorTrackingDto[e] && - mentorTrackingDto[e] != "" && - Object.keys(mentorSchema).includes(e) - ) { - if (Array.isArray(mentorTrackingDto[e])) { - query += `${e}: ${JSON.stringify(mentorTrackingDto[e])}, `; - } else { - query += `${e}: ${JSON.stringify(mentorTrackingDto[e])}, `; - } - } - }); - - var axios = require("axios"); - var data = { - query: `mutation updateMentorTracking($mentorTrackingId: uuid) { - update_mentortracking(where: {mentorTrackingId: {_eq: $mentorTrackingId}}, _set: {${query}}) { - affected_rows - } -}`, - variables: { - mentorTrackingId: mentorTrackingId, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async searchMentorTracking( - limit: string, - mentorTrackingId: string, - mentorId: string, - teacherId: string, - schoolId: string, - scheduleVisitDate: Date, - visitDate: Date, - page: number, - status: string, - request: any - ) { - var axios = require("axios"); - - const searchData = { - mentorTrackingId, - mentorId, - teacherId, - schoolId, - scheduleVisitDate, - visitDate, - status, - }; - let offset = 0; - - if (page > 1) { - offset = parseInt(limit) * (page - 1); - } - - let query = ""; - Object.keys(searchData).forEach((e) => { - if (searchData[e] && searchData[e] != "") { - query += `${e}:{_eq:"${searchData[e]}"}`; - } - }); - - var data = { - query: `query searchMentorTracking($offset:Int,$limit:Int) { - mentortracking_aggregate { - aggregate { - count - } - } - mentortracking(limit: $limit, offset: $offset, where: {${query}}) { - mentorTrackingId - created_at - feedback - mentorId - scheduleVisitDate - status - teacherId - schoolId - updated_at - visitDate - lastVisited - } -}`, - variables: { - limit: parseInt(limit), - offset: offset, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = await this.mappedResponse(response.data.data.mentortracking); - const count = - response?.data?.data?.mentortracking_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: result, - }); - } - - public async mappedResponse(result: any) { - const mentorResponse = result.map((obj: any) => { - const mentorMapping = { - id: obj?.mentorTrackingId ? `${obj.mentorTrackingId}` : "", - mentorTrackingId: obj?.mentorTrackingId - ? `${obj.mentorTrackingId}` - : "", - mentorId: obj?.mentorId ? `${obj.mentorId}` : "", - teacherId: obj?.teacherId ? `${obj.teacherId}` : "", - schoolId: obj?.schoolId ? `${obj.schoolId}` : "", - scheduleVisitDate: obj?.scheduleVisitDate - ? `${obj.scheduleVisitDate}` - : "", - visitDate: obj?.visitDate ? `${obj.visitDate}` : "", - feedback: obj?.feedback ? `${obj.feedback}` : "", - status: obj?.status ? obj.status : "", - lastVisited: obj?.lastVisited ? obj.lastVisited : "", - createdAt: obj?.created_at ? `${obj.created_at}` : "", - updatedAt: obj?.updated_at ? `${obj.updated_at}` : "", - }; - return new MentorTrackingDto(mentorMapping); - }); - - return mentorResponse; - } -} diff --git a/src/app.module.ts b/src/app.module.ts index 6fecf2f1..00b01792 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -7,7 +7,6 @@ import { AppService } from "./app.service"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { MentorTrackingModule } from "./mentorTracking/mentorTracking.module"; import { MonitorTrackingModule } from "./monitorTracking/monitorTracking.module"; import { AnnouncementsModule } from "./announcements/announcements.module"; import { WorkHistoryModule } from "./workHistory/workHistory.module"; diff --git a/src/mentorTracking/dto/feedback-create.dto.ts b/src/mentorTracking/dto/feedback-create.dto.ts deleted file mode 100644 index 2707c62a..00000000 --- a/src/mentorTracking/dto/feedback-create.dto.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; -import * as FormData from "form-data"; -export class FeedbackCreateDto { - @ApiProperty({}) - feedback: FormData; - - @ApiProperty({ type: "string", format: "binary" }) - image: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/mentorTracking/dto/mentorTracking.dto.ts b/src/mentorTracking/dto/mentorTracking.dto.ts deleted file mode 100644 index 49461ad5..00000000 --- a/src/mentorTracking/dto/mentorTracking.dto.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; -import { IsEnum, IsIn, IsNotEmpty, IsString } from "class-validator"; -import { VisitStatus } from "./visitStatus.enum"; - -export class MentorTrackingDto { - @Expose() - id: string; - - @Expose() - mentorTrackingId: string; - - @ApiProperty({}) - @Expose() - mentorId: string; - - @ApiProperty({}) - @Expose() - teacherId: string; - - @ApiProperty({}) - @Expose() - schoolId: string; - - @ApiProperty({ - default: new Date().toISOString().split("T")[0], - }) - @Expose() - scheduleVisitDate: string; - - @ApiProperty({ - default: new Date().toISOString().split("T")[0], - }) - @Expose() - visitDate: string; - - @ApiProperty({}) - @Expose() - feedback: string; - - @IsString() - @IsNotEmpty() - @IsIn([VisitStatus.pending, VisitStatus.visited]) - @IsEnum(VisitStatus) - @ApiPropertyOptional({ - enum: [VisitStatus.pending, VisitStatus.visited], - }) - @Expose() - status: string; - - @ApiProperty({ default: new Date().toISOString().split("T")[0] }) - @Expose() - lastVisited: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - @Expose() - createdBy: string; - - @Expose() - updatedBy: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/mentorTracking/dto/visitStatus.enum.ts b/src/mentorTracking/dto/visitStatus.enum.ts deleted file mode 100644 index 6a8dc426..00000000 --- a/src/mentorTracking/dto/visitStatus.enum.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum VisitStatus { - pending = "pending", - visited = "visited", -} diff --git a/src/mentorTracking/mentorTracking.controller.ts b/src/mentorTracking/mentorTracking.controller.ts deleted file mode 100644 index 2f1a4e7a..00000000 --- a/src/mentorTracking/mentorTracking.controller.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { - Controller, - Get, - Post, - Body, - Put, - Param, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, - Query, - ValidationPipe, - UsePipes, - UploadedFile, -} from "@nestjs/common"; -import { - ApiTags, - ApiBody, - ApiOkResponse, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiQuery, - ApiConsumes, - ApiExcludeController, -} from "@nestjs/swagger"; -import { Request } from "@nestjs/common"; -import { MentorTrackingDto } from "./dto/mentorTracking.dto"; -import { MentorTrackingService } from "src/adapters/hasura/mentorTracking.adapter"; -import { FileInterceptor } from "@nestjs/platform-express"; -import { editFileName, imageFileFilter } from "./utils/file-upload.utils"; -import { diskStorage } from "multer"; -import { FeedbackCreateDto } from "./dto/feedback-create.dto"; -// @ApiTags("Mentor Tracking") -@ApiExcludeController() -@Controller("mentortracking") -export class MentorTrackingController { - constructor(private readonly service: MentorTrackingService) {} - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Mentor Tracking detail." }) - @SerializeOptions({ - strategy: "excludeAll", - }) - getMentor(@Param("id") mentorId: string, @Req() request: Request) { - return this.service.getMentorTracking(mentorId, request); - } - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Mentor Tracking has been created successfully.", - // }) - // @ApiBody({ type: MentorTrackingDto }) - @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @UsePipes(new ValidationPipe({})) - public async createMentor( - @Req() request: Request, - @Body() mentorDto: MentorTrackingDto - ) { - return this.service.createMentorTracking(request, mentorDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Mentor Tracking has been updated successfully.", - // }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @UsePipes(new ValidationPipe({})) - public async updateMentor( - @Param("id") mentorTrackingId: string, - @Req() request: Request, - @Body() mentorTrackingDto: MentorTrackingDto - ) { - return await this.service.updateMentorTracking( - mentorTrackingId, - request, - mentorTrackingDto - ); - } - - @Put("feedback/:id") - // @ApiConsumes("multipart/form-data") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Group has been updated successfully." }) - @UseInterceptors( - FileInterceptor("image", { - storage: diskStorage({ - destination: process.env.IMAGEPATH, - filename: editFileName, - }), - fileFilter: imageFileFilter, - }) - ) - // @ApiBody({ type: FeedbackCreateDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async feedback( - @Param("id") mentorTrackingId: string, - @Req() request: Request, - @Body() feedbackCreateDto: FeedbackCreateDto, - @UploadedFile() image - ) { - const response = { - image: image?.filename, - }; - Object.assign(feedbackCreateDto, response); - - return await this.service.feedback( - mentorTrackingId, - feedbackCreateDto, - request - ); - } - - @Post("/search") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiOkResponse({ description: " Ok." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "limit", required: false }) - // @ApiQuery({ name: "mentorTrackingId", required: false }) - // @ApiQuery({ name: "mentorId", required: false }) - // @ApiQuery({ name: "teacherId", required: false }) - // @ApiQuery({ name: "schoolId", required: false }) - // @ApiQuery({ name: "scheduleVisitDate", required: false }) - // @ApiQuery({ name: "visitDate", required: false }) - // @ApiQuery({ name: "page", required: false }) - // @ApiQuery({ name: "status", required: false }) - public async searchMentorTracking( - @Query("limit") limit: string, - @Query("mentorTrackingId") mentorTrackingId: string, - @Query("mentorId") mentorId: string, - @Query("teacherId") teacherId: string, - @Query("schoolId") schoolId: string, - @Query("scheduleVisitDate") scheduleVisitDate: Date, - @Query("visitDate") visitDate: Date, - @Query("page") page: number, - @Query("status") status: string, - @Req() request: Request - ) { - return this.service.searchMentorTracking( - limit, - mentorTrackingId, - mentorId, - teacherId, - schoolId, - scheduleVisitDate, - visitDate, - page, - status, - request - ); - } -} diff --git a/src/mentorTracking/mentorTracking.module.ts b/src/mentorTracking/mentorTracking.module.ts deleted file mode 100644 index e0e6078c..00000000 --- a/src/mentorTracking/mentorTracking.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { HttpModule } from "@nestjs/axios"; -import { CacheModule, Module } from "@nestjs/common"; -import { MentorTrackingService } from "src/adapters/hasura/mentorTracking.adapter"; -import { MentorTrackingController } from "./mentorTracking.controller"; - -@Module({ - imports: [HttpModule], - controllers: [MentorTrackingController], - providers: [MentorTrackingService], -}) -export class MentorTrackingModule {} diff --git a/src/mentorTracking/utils/file-upload.utils.ts b/src/mentorTracking/utils/file-upload.utils.ts deleted file mode 100644 index 6bd794ca..00000000 --- a/src/mentorTracking/utils/file-upload.utils.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { extname } from "path"; - -export const imageFileFilter = (req, file, callback) => { - if (!file.originalname.match(/.(jpg|jpeg|png|gif|pdf)$/)) { - return callback(new Error("!"), false); - } - callback(null, true); -}; - -export const editFileName = (req, file, callback) => { - const name = file.originalname.split(".")[0]; - const fileExtName = extname(file.originalname); - const randomName = Array(4) - .fill(null) - .map(() => Math.round(Math.random() * 16).toString(16)) - .join(""); - callback(null, `${name}-${randomName}${fileExtName}`); -}; From 7c723775b7ab4d5df72e93a78ec80df846f38497 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:54:08 +0530 Subject: [PATCH 11/13] chore : removed monitor tracking module --- .../hasura/monitorTracking.adapter.ts | 241 ------------------ src/app.module.ts | 1 - .../dto/monitorTracking.dto.ts | 70 ----- src/monitorTracking/dto/visitStatus.enum.ts | 4 - .../monitorTracking.controller.ts | 119 --------- src/monitorTracking/monitorTracking.module.ts | 12 - 6 files changed, 447 deletions(-) delete mode 100644 src/adapters/hasura/monitorTracking.adapter.ts delete mode 100644 src/monitorTracking/dto/monitorTracking.dto.ts delete mode 100644 src/monitorTracking/dto/visitStatus.enum.ts delete mode 100644 src/monitorTracking/monitorTracking.controller.ts delete mode 100644 src/monitorTracking/monitorTracking.module.ts diff --git a/src/adapters/hasura/monitorTracking.adapter.ts b/src/adapters/hasura/monitorTracking.adapter.ts deleted file mode 100644 index e4312b9a..00000000 --- a/src/adapters/hasura/monitorTracking.adapter.ts +++ /dev/null @@ -1,241 +0,0 @@ -import { HttpService } from "@nestjs/axios"; -import { Injectable } from "@nestjs/common"; -import { SuccessResponse } from "src/success-response"; -import { MonitorTrackingDto } from "src/monitorTracking/dto/monitorTracking.dto"; -@Injectable() -export class MonitorTrackingService { - constructor(private httpService: HttpService) {} - - public async getMonitorTracking(monitorId: string, request: any) { - var axios = require("axios"); - - var data = { - query: `query GetMonitorTracking($monitorTrackingId:uuid) { - monitortracking(where: {monitorTrackingId: {_eq:$monitorTrackingId }}) { - created_at - feedback - monitorTrackingId - scheduleVisitDate - schoolId - monitorId - status - updated_at - visitDate - lastVisited - } - }`, - variables: { monitorTrackingId: monitorId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = await this.mappedResponse(response.data.data.monitortracking); - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async createMonitorTracking( - request: any, - monitorTrackingDto: MonitorTrackingDto - ) { - var axios = require("axios"); - - let query = ""; - Object.keys(monitorTrackingDto).forEach((e) => { - if (monitorTrackingDto[e] && monitorTrackingDto[e] != "") { - query += `${e}: "${monitorTrackingDto[e]}", `; - } - }); - var data = { - query: `mutation CreateMonitorTracking { - insert_monitortracking_one(object: {${query}}) { - monitorTrackingId - } - }`, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data.insert_monitortracking_one; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateMonitorTracking( - monitorTrackingId: string, - request: any, - monitorTrackingDto: MonitorTrackingDto - ) { - var axios = require("axios"); - - let query = ""; - Object.keys(monitorTrackingDto).forEach((e) => { - if (monitorTrackingDto[e] && monitorTrackingDto[e] != "") { - query += `${e}:"${monitorTrackingDto[e]}"`; - } - }); - - var data = { - query: `mutation UpdatedMonitorTracking($monitorTrackingId:uuid) { - update_monitortracking(where: {monitorTrackingId: {_eq: $monitorTrackingId}}, _set: {${query}}) { - affected_rows - } -}`, - variables: { - monitorTrackingId: monitorTrackingId, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async searchMonitorTracking( - limit: string, - monitorTrackingId: string, - monitorId: string, - schoolId: string, - groupId: string, - scheduleVisitDate: Date, - visitDate: Date, - page: number, - request: any - ) { - var axios = require("axios"); - let offset = 0; - - if (page > 1) { - offset = parseInt(limit) * (page - 1); - } - const searchData = { - monitorTrackingId, - monitorId, - schoolId, - groupId, - scheduleVisitDate, - visitDate, - }; - - let query = ""; - Object.keys(searchData).forEach((e) => { - if (searchData[e] && searchData[e] != "") { - query += `${e}:{_eq:"${searchData[e]}"}`; - } - }); - - var data = { - query: `query SearchMonitorTracking($offset:Int,$limit:Int) { - monitortracking_aggregate { - aggregate { - count - } - } - monitortracking(where:{ ${query}}, offset: $offset,limit: $limit) { - created_at - feedback - monitorTrackingId - scheduleVisitDate - status - schoolId - groupId - monitorId - updated_at - visitDate - lastVisited - } - }`, - variables: { limit: parseInt(limit), offset: offset }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = await this.mappedResponse(response.data.data.monitortracking); - const count = - response?.data?.data?.monitortracking_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: result, - }); - } - - public async mappedResponse(result: any) { - const monitorResponse = result.map((obj: any) => { - const monitorMapping = { - id: obj?.monitorTrackingId ? `${obj.monitorTrackingId}` : "", - monitorTrackingId: obj?.monitorTrackingId - ? `${obj.monitorTrackingId}` - : "", - monitorId: obj?.monitorId ? `${obj.monitorId}` : "", - schoolId: obj?.schoolId ? `${obj.schoolId}` : "", - groupId: obj?.groupId ? `${obj.groupId}` : "", - scheduleVisitDate: obj?.scheduleVisitDate - ? `${obj.scheduleVisitDate}` - : "", - visitDate: obj?.visitDate ? `${obj.visitDate}` : "", - feedback: obj?.feedback ? `${obj.feedback}` : "", - status: obj?.status ? `${obj.status}` : "", - - lastVisited: obj?.lastVisited ? `${obj.lastVisited}` : "", - createdAt: obj?.created_at ? `${obj.created_at}` : "", - updatedAt: obj?.updated_at ? `${obj.updated_at}` : "", - }; - return new MonitorTrackingDto(monitorMapping); - }); - - return monitorResponse; - } -} diff --git a/src/app.module.ts b/src/app.module.ts index 00b01792..34099e75 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -7,7 +7,6 @@ import { AppService } from "./app.service"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { MonitorTrackingModule } from "./monitorTracking/monitorTracking.module"; import { AnnouncementsModule } from "./announcements/announcements.module"; import { WorkHistoryModule } from "./workHistory/workHistory.module"; */ diff --git a/src/monitorTracking/dto/monitorTracking.dto.ts b/src/monitorTracking/dto/monitorTracking.dto.ts deleted file mode 100644 index 79e03261..00000000 --- a/src/monitorTracking/dto/monitorTracking.dto.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty } from "@nestjs/swagger"; -import { VisitStatus } from "./visitStatus.enum"; -import { IsEnum, IsIn, IsNotEmpty, IsString } from "class-validator"; - -export class MonitorTrackingDto { - @Expose() - id: string; - - @Expose() - monitorTrackingId: string; - - @ApiProperty({}) - @Expose() - monitorId: string; - - @ApiProperty({}) - @Expose() - schoolId: string; - - @ApiProperty({ description: "Group ID (class ID)" }) - @Expose() - groupId: string; - - @ApiProperty({ - default: new Date().toISOString().split("T")[0], - }) - @Expose() - scheduleVisitDate: string; - - @ApiProperty({ - default: new Date().toISOString().split("T")[0], - }) - @Expose() - visitDate: string; - - @ApiProperty({}) - @Expose() - feedback: string; - - @IsString() - @IsNotEmpty() - @IsIn([VisitStatus.pending, VisitStatus.visited]) - @IsEnum(VisitStatus) - @ApiProperty({ - enum: [VisitStatus.pending, VisitStatus.visited], - }) - @Expose() - status: string; - - @ApiProperty({ default: new Date().toISOString().split("T")[0] }) - @Expose() - lastVisited: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - @Expose() - createdBy: string; - - @Expose() - updatedBy: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/monitorTracking/dto/visitStatus.enum.ts b/src/monitorTracking/dto/visitStatus.enum.ts deleted file mode 100644 index 6a8dc426..00000000 --- a/src/monitorTracking/dto/visitStatus.enum.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum VisitStatus { - pending = "pending", - visited = "visited", -} diff --git a/src/monitorTracking/monitorTracking.controller.ts b/src/monitorTracking/monitorTracking.controller.ts deleted file mode 100644 index 4b42a3d9..00000000 --- a/src/monitorTracking/monitorTracking.controller.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { - Controller, - Get, - Post, - Body, - Put, - Param, - UseInterceptors, - ClassSerializerInterceptor, - SerializeOptions, - Req, - Query, - ValidationPipe, - UsePipes, -} from "@nestjs/common"; -import { - ApiTags, - ApiBody, - ApiOkResponse, - ApiForbiddenResponse, - ApiCreatedResponse, - ApiBasicAuth, - ApiQuery, - ApiExcludeController, -} from "@nestjs/swagger"; -import { Request } from "@nestjs/common"; -import { MonitorTrackingDto } from "./dto/monitorTracking.dto"; -import { MonitorTrackingService } from "src/adapters/hasura/monitorTracking.adapter"; - -// @ApiTags("Monitor Tracking") -@ApiExcludeController() -@Controller("monitortracking") -export class MonitorTrackingController { - constructor(private readonly service: MonitorTrackingService) {} - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Monitor Tracking detail." }) - @SerializeOptions({ - strategy: "excludeAll", - }) - getMonitor(@Param("id") monitorTrackingId: string, @Req() request: Request) { - return this.service.getMonitorTracking(monitorTrackingId, request); - } - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Monitor Tracking has been created successfully.", - // }) - // @ApiBody({ type: MonitorTrackingDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @UsePipes(new ValidationPipe({})) - public async createMonitor( - @Req() request: Request, - @Body() monitorDto: MonitorTrackingDto - ) { - return this.service.createMonitorTracking(request, monitorDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Monitor Tracking has been updated successfully.", - // }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - @UsePipes(new ValidationPipe({})) - public async updateMonitor( - @Param("id") monitorTrackingId: string, - @Req() request: Request, - @Body() monitorDto: MonitorTrackingDto - ) { - return await this.service.updateMonitorTracking( - monitorTrackingId, - request, - monitorDto - ); - } - - @Post("/search") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiOkResponse({ description: " Ok." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @ApiQuery({ name: "limit", required: false }) - // @ApiQuery({ name: "monitorTrackingId", required: false }) - // @ApiQuery({ name: "monitorId", required: false }) - // @ApiQuery({ name: "schoolId", required: false }) - // @ApiQuery({ name: "groupId", required: false }) - // @ApiQuery({ name: "scheduleVisitDate", required: false }) - // @ApiQuery({ name: "visitDate", required: false }) - // @ApiQuery({ name: "page", required: false }) - public async searchMonitorTracking( - @Query("limit") limit: string, - @Query("monitorTrackingId") monitorTrackingId: string, - @Query("monitorId") monitorId: string, - @Query("schoolId") schoolId: string, - @Query("groupId") groupId: string, - @Query("scheduleVisitDate") scheduleVisitDate: Date, - @Query("visitDate") visitDate: Date, - @Query("page") page: number, - @Req() request: Request - ) { - return this.service.searchMonitorTracking( - limit, - monitorTrackingId, - monitorId, - schoolId, - groupId, - scheduleVisitDate, - visitDate, - page, - request - ); - } -} diff --git a/src/monitorTracking/monitorTracking.module.ts b/src/monitorTracking/monitorTracking.module.ts deleted file mode 100644 index 5dbdab04..00000000 --- a/src/monitorTracking/monitorTracking.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { HttpModule } from "@nestjs/axios"; -import { CacheModule, Module } from "@nestjs/common"; -import { MonitorTrackingService } from "src/adapters/hasura/monitorTracking.adapter"; - -import { MonitorTrackingController } from "./monitorTracking.controller"; - -@Module({ - imports: [HttpModule], - controllers: [MonitorTrackingController], - providers: [MonitorTrackingService], -}) -export class MonitorTrackingModule {} From 5344a1651be6aaa7e410ae664e6db069bd3a2fea Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:57:08 +0530 Subject: [PATCH 12/13] chore : removed announcements module --- src/adapters/announcementsservicelocator.ts | 14 - src/adapters/hasura/announcements.adapter.ts | 313 ------------------ .../announcements.controller.spec.ts | 18 - src/announcements/announcements.controller.ts | 111 ------- src/announcements/announcements.module.ts | 21 -- .../dto/announcements-filter.dto.ts | 84 ----- src/announcements/dto/announcements.dto.ts | 88 ----- src/app.module.ts | 1 - 8 files changed, 650 deletions(-) delete mode 100644 src/adapters/announcementsservicelocator.ts delete mode 100644 src/adapters/hasura/announcements.adapter.ts delete mode 100644 src/announcements/announcements.controller.spec.ts delete mode 100644 src/announcements/announcements.controller.ts delete mode 100644 src/announcements/announcements.module.ts delete mode 100644 src/announcements/dto/announcements-filter.dto.ts delete mode 100644 src/announcements/dto/announcements.dto.ts diff --git a/src/adapters/announcementsservicelocator.ts b/src/adapters/announcementsservicelocator.ts deleted file mode 100644 index 43786ef8..00000000 --- a/src/adapters/announcementsservicelocator.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { AnnouncementsFilterDto } from "src/announcements/dto/announcements-filter.dto"; -import { AnnouncementsDto } from "src/announcements/dto/announcements.dto"; - -export interface IServicelocator { - getAnnouncement(announcementId: any, request: any); - getAnnouncementSet(request: any, filters?: AnnouncementsFilterDto); - updateAnnouncement( - announcementId: string, - request: any, - announcementData: AnnouncementsDto - ); - createAnnouncement(request: any, announcementData: AnnouncementsDto); - deleteAnnouncement(announcementId: string, request: any); -} diff --git a/src/adapters/hasura/announcements.adapter.ts b/src/adapters/hasura/announcements.adapter.ts deleted file mode 100644 index a374f53f..00000000 --- a/src/adapters/hasura/announcements.adapter.ts +++ /dev/null @@ -1,313 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; -import { IServicelocator } from "../announcementsservicelocator"; -import { AnnouncementsDto } from "src/announcements/dto/announcements.dto"; -import { AnnouncementsFilterDto } from "src/announcements/dto/announcements-filter.dto"; - -export const AnnouncementsToken = "Announcements"; -// TODO: Refactor as per Shiksha 2.0 -@Injectable() -export class AnnouncementsService implements IServicelocator { - constructor(private httpService: HttpService) {} - baseURL = process.env.REGISTRYHASURA; - adminSecret = process.env.REGISTRYHASURAADMINSECRET; - - //to get details of a given announcement - public async getAnnouncement(announcementId: string, request: any) { - var axios = require("axios"); - var data = { - query: `query getAnnouncement($id:Int!) { - announcements(where: {id: {_eq: $id}}) { - id, - title, - status, - type, - modified_at, - data, - is_pinned, - is_dismissable, - additional_tags, - } - }`, - variables: { - id: announcementId, - }, - }; - var config = { - method: "post", - url: this.baseURL, - headers: { - "x-hasura-admin-secret": this.adminSecret, - "Content-Type": "application/json", - }, - data: data, - }; - - const responseData = await axios(config); - const response = responseData.data.data.announcements; - - let responsedata = await this.mappedResponse(response); - let x = new SuccessResponse({ - statusCode: 200, - message: "ok.", - data: responsedata, - }); - return x; - } - - //to get the data of announcements by page - public async getAnnouncementSet( - request: any, - filters: AnnouncementsFilterDto - ) { - var axios = require("axios"); - - //adding select clause to filters - let selectClause = ``, - queryVar = ``; - let variables = {}; - - //add corr select and data statement to query - if (filters?.pageSize) { - variables["_limit"] = parseInt(filters.pageSize); - } - if (filters?.pageIndex) { - variables["_offset"] = parseInt(filters.pageIndex); - } - if (filters?.title) { - variables["_title"] = `%${filters.title}%`; - queryVar += `$_title: String,`; - selectClause += `title: {_ilike: $_title}`; - } - if (filters?.author) { - variables["_author"] = filters.author; - queryVar += `$_author: [String],`; - selectClause += `author:{_in: $_author},`; - } - if (filters?.isPinned) { - variables["_isPinned"] = filters?.isPinned; - queryVar += `$_isPinned: Boolean,`; - selectClause += `is_pinned: {_eq: $_isPinned},`; - } - if (filters?.pinnedAnnouncementProperties) { - variables["_isDismissable"] = - filters?.pinnedAnnouncementProperties?.isDismissable; - queryVar += `$_isDismissable: Boolean,`; - selectClause += `is_dismissable: {_eq: $_isDismissable},`; - } - if (filters?.status) { - variables["_status"] = filters?.status; - queryVar += `$_status: String,`; - selectClause += `status: {_ilike: $_status},`; - } - if (filters?.announcementType) { - variables["_type"] = filters?.announcementType; - queryVar += `$_type: [String]`; - selectClause += `type: {_in: $_type},`; - } - if (filters?.startDate && filters?.endDate) { - variables["_startDate"] = filters?.startDate; - variables["_endDate"] = filters?.endDate; - queryVar += `$_startDate: timestamptz, $_endDate: timestamptz,`; - selectClause += `modified_at: {_gte: $_startDate, _lte: $_endDate},`; - } - - let data = { - query: `query get_announcement_set($_limit: Int, $_offset: Int, ${queryVar}) { - announcements(limit: $_limit, offset: $_offset, order_by: {modified_at: desc}, where: { ${selectClause} }) { - additional_tags - author - data - id - is_dismissable - is_pinned - modified_at - status - title - type - } - announcements_aggregate(where: {${selectClause}}) { - aggregate { - count - } - } - } - `, - variables: variables, - }; - var config = { - method: "post", - url: this.baseURL, - headers: { - "x-hasura-admin-secret": this.adminSecret, - "Content-Type": "application/json", - }, - data: data, - }; - - const responseData = await axios(config); - const response = responseData.data.data.announcements; - let responsedata = await this.mappedResponse(response); - return new SuccessResponse({ - statusCode: 200, - message: "ok.", - data: { - count: responseData.data.data.announcements_aggregate.aggregate.count, - data: responsedata, - }, - }); - } - - //to update a given announcement - public async updateAnnouncement( - announcementId: string, - request: any, - announcementsData: AnnouncementsDto - ) { - var axios = require("axios"); - let isPresent: any; - - var updateData = { - query: `mutation updateAnnouncements($id: Int!, $additional_tags: _text = "", $data: String = "", $is_dismissable: Boolean = false, $is_pinned: Boolean = false, $modified_at: timestamptz, $status: String = "",$author: String = "", $title: String = "", $type: String = "") { - update_announcements(_set: {additional_tags: $additional_tags, data: $data, is_dismissable: $is_dismissable, is_pinned: $is_pinned, modified_at: $modified_at, status: $status,author: $author, title: $title, type: $type}, where: {id: {_eq: $id}}) { - affected_rows - }}`, - variables: { - id: parseInt(announcementId), - additional_tags: `{${announcementsData.additionalTags.toString()}}`, - data: announcementsData.data, - is_dismissable: - announcementsData.pinnedAnnouncementProperties?.is_dismissable, - is_pinned: announcementsData.isPinned, - modified_at: announcementsData.dateModified, - status: announcementsData.status, - author: announcementsData.author, - title: announcementsData.title, - type: announcementsData.announcementType, - }, - }; - var updateConfig = { - method: "post", - url: this.baseURL, - headers: { - "x-hasura-admin-secret": this.adminSecret, - "Content-Type": "application/json", - }, - data: updateData, - }; - - const responseData = await axios(updateConfig); - const response = responseData.data; - - return new SuccessResponse({ - statusCode: 200, - message: "ok.", - data: response, - }); - } - - //to create an announcement - public async createAnnouncement(request: any, announcementsData: any) { - var axios = require("axios"); - var data = { - query: `mutation createAnnouncement($additional_tags: _text, $data: String = "", $is_dismissable: Boolean = false, $is_pinned: Boolean = false, $status: String = "", $title: String = "", $type: String = "") { - insert_announcements_one(object: {additional_tags: $additional_tags, data: $data, is_dismissable: $is_dismissable, is_pinned: $is_pinned, status: $status, title: $title, type: $type}) { - id - } - } - `, - variables: { - additional_tags: `{${announcementsData?.additionalTags?.toString()}}`, - data: announcementsData.data, - is_dismissable: - announcementsData.pinnedAnnouncementProperties?.is_dismissable, - is_pinned: announcementsData.isPinned, - status: announcementsData.status, - title: announcementsData.title, - type: announcementsData.announcementType, - }, - }; - - var config = { - method: "post", - url: this.baseURL, - headers: { - "x-hasura-admin-secret": this.adminSecret, - "Content-Type": "application/json", - }, - data: data, - }; - - const responseData = await axios(config); - const response = responseData.data; - let final = { - ...response, - result: { - Announcements: { osid: response.data.insert_announcements_one.id }, - }, - }; - - return new SuccessResponse({ - statusCode: 200, - message: "ok.", - data: final, - }); - } - - //to delete an announcement - public async deleteAnnouncement(announcementId: string, request: any) { - var axios = require("axios"); - var data = { - query: `mutation delete_announcement($id: Int!) { - delete_announcements_by_pk(id: $id){ - id - } - } - `, - variables: { - id: announcementId, - }, - }; - var config = { - method: "post", - url: this.baseURL, - headers: { - "x-hasura-admin-secret": this.adminSecret, - "Content-Type": "application/json", - }, - data: data, - }; - - const responseData = await axios(config); - const response = responseData.data.data; - let x = new SuccessResponse({ - statusCode: 200, - message: "Deleted announcement successfully", - data: response, - }); - return x; - } - - public async mappedResponse(result: any) { - const announcementResponse = result.map((obj: any) => { - const announcementMapping = { - announcementId: obj?.id ? `${obj.id}` : "", - title: obj?.title ? `${obj.title}` : "", - status: obj?.status ? `${obj.status}` : "", - author: obj?.author ? `${obj.author}` : "", - announcementType: obj?.type ? `${obj.type}` : "", - dateModified: obj?.modified_at ? `${obj.modified_at}` : "", - data: obj?.data ? `${obj.data}` : "", - isPinned: obj?.is_pinned ? obj.is_pinned : false, - additionalTags: obj?.additional_tags ? obj.additional_tags : [], - pinnedAnnouncementProperties: { - isDismissable: obj?.is_dismissable ?? false, - }, - }; - return new AnnouncementsDto(announcementMapping); - }); - - return announcementResponse; - } -} diff --git a/src/announcements/announcements.controller.spec.ts b/src/announcements/announcements.controller.spec.ts deleted file mode 100644 index 25f0980d..00000000 --- a/src/announcements/announcements.controller.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Test, TestingModule } from "@nestjs/testing"; -import { AnnouncementsController } from "./announcements.controller"; - -describe("AnnouncementsController", () => { - let controller: AnnouncementsController; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [AnnouncementsController], - }).compile(); - - controller = module.get(AnnouncementsController); - }); - - it("should be defined", () => { - expect(controller).toBeDefined(); - }); -}); diff --git a/src/announcements/announcements.controller.ts b/src/announcements/announcements.controller.ts deleted file mode 100644 index 582efda5..00000000 --- a/src/announcements/announcements.controller.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { - Body, - ClassSerializerInterceptor, - Controller, - Delete, - Get, - Inject, - Param, - Post, - Put, - Query, - Req, - Request, - UseInterceptors, -} from "@nestjs/common"; -import { - ApiBasicAuth, - ApiBody, - ApiConsumes, - ApiCreatedResponse, - ApiExcludeController, - ApiForbiddenResponse, - ApiOkResponse, -} from "@nestjs/swagger"; -import { IServicelocator } from "src/adapters/announcementsservicelocator"; -import { - AnnouncementsService, - AnnouncementsToken, -} from "src/adapters/hasura/announcements.adapter"; -import { AnnouncementsFilterDto } from "./dto/announcements-filter.dto"; -import { AnnouncementsDto } from "./dto/announcements.dto"; -@ApiExcludeController() -@Controller("announcements") -export class AnnouncementsController { - constructor( - private hasuraService: AnnouncementsService, - @Inject(AnnouncementsToken) private provider: IServicelocator - ) {} - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Get announcement detail" }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - public async getAnnouncement( - @Param("id") announcementId: string, - @Req() request: Request - ) { - return this.hasuraService.getAnnouncement(announcementId, request); - } - - @Get("") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Get announcements" }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - public async getAnnouncementSet( - @Query() query: AnnouncementsFilterDto, - @Req() request: Request - ) { - return this.hasuraService.getAnnouncementSet(request, query); - } - - @Put("/:id") - // @ApiConsumes("multipart/form-data") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Announcement has been Updated successfully.", - // }) - // @ApiBody({ type: AnnouncementsDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async updateAnnouncement( - @Param("id") announcementId: string, - @Req() request: Request, - @Body() announcementData: any - ) { - const updatedData = JSON.parse(announcementData?.data); - return this.hasuraService.updateAnnouncement( - announcementId, - request, - updatedData - ); - } - - @Post() - // @ApiConsumes("multipart/form-data") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Announcement has been created successfully.", - // }) - // @ApiBody({ type: AnnouncementsDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - public async createAnnouncement( - @Req() request: Request, - @Body() announcementData: AnnouncementsDto - ) { - return this.hasuraService.createAnnouncement(request, announcementData); - } - - @Delete("/:id") - @UseInterceptors(ClassSerializerInterceptor) - // @ApiBasicAuth("access-token") - // @ApiOkResponse({ description: "Deleted the announcement " }) - public async deleteAnnouncement( - @Param("id") announcementId: string, - @Req() request: Request - ) { - return this.hasuraService.deleteAnnouncement(announcementId, request); - } -} diff --git a/src/announcements/announcements.module.ts b/src/announcements/announcements.module.ts deleted file mode 100644 index 622c3c19..00000000 --- a/src/announcements/announcements.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Module } from "@nestjs/common"; -import { HttpModule } from "@nestjs/axios"; -import { ScheduleModule } from "@nestjs/schedule"; -import { - AnnouncementsService, - AnnouncementsToken, -} from "../adapters/hasura/announcements.adapter"; -import { AnnouncementsController } from "./announcements.controller"; - -@Module({ - imports: [HttpModule, ScheduleModule.forRoot()], - providers: [ - AnnouncementsService, - { - provide: AnnouncementsToken, - useClass: AnnouncementsService, - }, - ], - controllers: [AnnouncementsController], -}) -export class AnnouncementsModule {} diff --git a/src/announcements/dto/announcements-filter.dto.ts b/src/announcements/dto/announcements-filter.dto.ts deleted file mode 100644 index d02a58f9..00000000 --- a/src/announcements/dto/announcements-filter.dto.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiPropertyOptional } from "@nestjs/swagger"; - -export class AnnouncementsFilterDto { - @ApiPropertyOptional({ - type: String, - description: "Page size(limit) for the announcement set", - }) - @Expose() - pageSize: string; - - @ApiPropertyOptional({ - type: String, - description: "Page index(offset) for the announcement", - }) - @Expose() - pageIndex: string; - - @ApiPropertyOptional({ - type: String, - description: "The title of announcement", - default: "", - }) - @Expose() - title: string; - - @ApiPropertyOptional({ - type: Array, - description: "The author of announcement", - default: "", - }) - @Expose() - author: string[]; - - @ApiPropertyOptional({ - type: Boolean, - description: "Whether announcement is pinned or not", - default: false, - }) - @Expose() - isPinned: boolean; - - @ApiPropertyOptional({ - type: Object, - description: "Additional properties for pinned announcements", - default: {}, - }) - @Expose() - pinnedAnnouncementProperties: any; - - @ApiPropertyOptional({ - type: String, - description: "The status of the announcement-draft or published", - default: "", - }) - @Expose() - status: string; - - @ApiPropertyOptional({ - type: Array, - description: "The type of announcement", - default: "", - }) - @Expose() - announcementType: string[]; - - @ApiPropertyOptional({ - type: String, - description: "Start date for filtering announcement", - }) - @Expose() - startDate: string; - - @ApiPropertyOptional({ - type: String, - description: "End date for filtering announcement", - }) - @Expose() - endDate: string; - - constructor(partial: Partial) { - Object.assign(this, partial); - } -} diff --git a/src/announcements/dto/announcements.dto.ts b/src/announcements/dto/announcements.dto.ts deleted file mode 100644 index d1f334f7..00000000 --- a/src/announcements/dto/announcements.dto.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; - -export class AnnouncementsDto { - @ApiProperty({ - type: String, - description: "The id of the announcement ", - default: "", - }) - @Expose() - announcementId: string; - - @ApiPropertyOptional({ - type: String, - description: "The data of the announcement", - default: "", - }) - @Expose() - data: string; - - @ApiProperty({ - type: String, - description: "The type of announcement", - default: "", - }) - @Expose() - announcementType: string; - - @ApiProperty({ - type: String, - description: "The title of announcement", - default: "", - }) - @Expose() - title: string; - - @ApiProperty({ - type: String, - description: "The date modified", - default: "", - }) - @Expose() - dateModified: string; - - @ApiPropertyOptional({ - type: Array, - description: "Additional properties of an announcement", - default: "", - }) - @Expose() - additionalTags: string[]; - - @ApiProperty({ - type: Boolean, - description: "Whether announcement is pinned or not", - default: false, - }) - @Expose() - isPinned: boolean; - - @ApiProperty({ - type: String, - description: "The status of the announcement-draft or published", - default: "", - }) - @Expose() - status: string; - - @ApiProperty({ - type: String, - description: "The author of the announcement", - default: "", - }) - @Expose() - author: string; - - @ApiPropertyOptional({ - type: Object, - description: "Additional properties for pinned announcements", - default: {}, - }) - @Expose() - pinnedAnnouncementProperties: any; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/app.module.ts b/src/app.module.ts index 34099e75..0067f7b0 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -7,7 +7,6 @@ import { AppService } from "./app.service"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { AnnouncementsModule } from "./announcements/announcements.module"; import { WorkHistoryModule } from "./workHistory/workHistory.module"; */ // In use for Shiksha 2.0 From 0e845b34234aeab0079523407ff5b89de824a759 Mon Sep 17 00:00:00 2001 From: Kshitija Kadam Date: Mon, 8 Apr 2024 18:58:35 +0530 Subject: [PATCH 13/13] chore : removed workHistory module --- src/adapters/hasura/workhistory.adapter.ts | 263 -------------- src/app.module.ts | 1 - src/workHistory/dto/user-work-history.dto.ts | 354 ------------------- src/workHistory/dto/work-history.dto.ts | 104 ------ src/workHistory/workHistory.controller.ts | 110 ------ src/workHistory/workHistory.module.ts | 11 - 6 files changed, 843 deletions(-) delete mode 100644 src/adapters/hasura/workhistory.adapter.ts delete mode 100644 src/workHistory/dto/user-work-history.dto.ts delete mode 100644 src/workHistory/dto/work-history.dto.ts delete mode 100644 src/workHistory/workHistory.controller.ts delete mode 100644 src/workHistory/workHistory.module.ts diff --git a/src/adapters/hasura/workhistory.adapter.ts b/src/adapters/hasura/workhistory.adapter.ts deleted file mode 100644 index 9e258984..00000000 --- a/src/adapters/hasura/workhistory.adapter.ts +++ /dev/null @@ -1,263 +0,0 @@ -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; -import { SuccessResponse } from "src/success-response"; -import { WorkHistoryDto } from "../../workHistory/dto/work-history.dto"; - -@Injectable() -export class WorkHistoryService { - constructor(private httpService: HttpService) {} - - public async createWorkHistory(request: any, workHistoryDto: WorkHistoryDto) { - var axios = require("axios"); - - let query = ""; - Object.keys(workHistoryDto).forEach((e) => { - if (workHistoryDto[e] && workHistoryDto[e] != "") { - query += `${e}: "${workHistoryDto[e]}", `; - } - }); - - var data = { - query: `mutation CreateWorkHistory { - insert_workhistory_one(object: {${query}}) { - workHistoryId - } - } - `, - variables: {}, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - const result = response.data.data.insert_workhistory_one; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async updateWorkHistory( - id: string, - request: any, - workHistoryDto: WorkHistoryDto - ) { - var axios = require("axios"); - - let query = ""; - Object.keys(workHistoryDto).forEach((e) => { - if (workHistoryDto[e] && workHistoryDto[e] != "") { - query += `${e}: "${workHistoryDto[e]}", `; - } - }); - - var data = { - query: `mutation UpdateWorkHistory($workHistoryId:uuid) { - update_workhistory(where: {workHistoryId: {_eq: $worksHitoryId}}, _set: {${query}}) { - affected_rows - } -}`, - variables: { - workHistoryId: id, - }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - const result = response.data.data; - - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async getWorkHistory(workHistoryId: any, request: any) { - var axios = require("axios"); - - var data = { - query: `query GetWorkHistory($workHistoryId:uuid) { - workhistory(where: {workHistoryId: {_eq: $workHistoryId}}) { - workHistoryId - cadre - created_at - dateOfJoining - dateOfOrder - dateOfRelieving - joiningDesignation - leavingDesignation - modeOfPosting - placeOfPosting - reason - remark - role - transferOrderNumber - updated_at - userId - organizationName - } - } - `, - variables: { workHistoryId: workHistoryId }, - }; - - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - let result = await this.mappedResponse(response?.data?.data?.workhistory); - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - data: result, - }); - } - - public async searchWorkHistory( - limit: string, - workHistoryId: string, - userId: string, - dateOfJoining: string, - dateOfRelieving: string, - page: number, - request: any - ) { - var axios = require("axios"); - - let offset = 0; - if (page > 1) { - offset = parseInt(limit) * (page - 1); - } - - const searchData = { - workHistoryId: workHistoryId, - userId: userId, - dateOfJoining: dateOfJoining, - dateOfRelieving: dateOfRelieving, - }; - - let query = ""; - Object.keys(searchData).forEach((e) => { - if (searchData[e] && searchData[e] != "") { - query += `${e}:{_eq:"${searchData[e]}"}`; - } - }); - - var data = { - query: `query SearchWorkHistory($limit:Int, $offset:Int) { - workhistory_aggregate { - aggregate { - count - } - } - workhistory(where:{ ${query}}, limit: $limit, offset: $offset,) { - workHistoryId - cadre - created_at - dateOfJoining - dateOfOrder - dateOfRelieving - joiningDesignation - leavingDesignation - modeOfPosting - placeOfPosting - reason - remark - role - transferOrderNumber - updated_at - userId - organizationName - } - }`, - variables: { - limit: parseInt(limit), - offset: offset, - }, - }; - var config = { - method: "post", - url: process.env.REGISTRYHASURA, - headers: { - "x-hasura-admin-secret": process.env.REGISTRYHASURAADMINSECRET, - "Content-Type": "application/json", - }, - data: data, - }; - - const response = await axios(config); - - let result = await this.mappedResponse(response.data.data.workhistory); - const count = response?.data?.data?.workhistory_aggregate?.aggregate?.count; - return new SuccessResponse({ - statusCode: 200, - message: "Ok.", - totalCount: count, - data: result, - }); - } - - public async mappedResponse(result: any) { - const workHistoryResponse = result.map((obj: any) => { - const workHistoryMapping = { - id: obj?.workHistoryId ? `${obj.workHistoryId}` : "", - workHistoryId: obj?.workHistoryId ? `${obj.workHistoryId}` : "", - userId: obj?.userId ? `${obj.userId}` : "", - role: obj?.role ? `${obj.role}` : "", - joiningDesignation: obj?.joiningDesignation - ? `${obj.joiningDesignation}` - : "", - leavingDesignation: obj?.leavingDesignation - ? `${obj.leavingDesignation}` - : "", - dateOfJoining: obj?.dateOfJoining ? obj.dateOfJoining : "", - dateOfRelieving: obj?.dateOfRelieving ? obj.dateOfRelieving : "", - reason: obj?.reason ? `${obj.reason}` : "", - remark: obj?.remark ? `${obj.remark}` : "", - cadre: obj?.cadre ? `${obj.cadre}` : "", - transferOrderNumber: obj?.transferOrderNumber - ? `${obj.transferOrderNumber}` - : "", - placeOfPosting: obj?.placeOfPosting ? `${obj.placeOfPosting}` : "", - dateOfOrder: obj?.dateOfOrder ? obj.dateOfOrder : "", - modeOfPosting: obj?.modeOfPosting ? `${obj.modeOfPosting}` : "", - organizationName: obj?.organizationName - ? `${obj.organizationName}` - : "", - createdAt: obj?.created_at ? `${obj.created_at}` : "", - updatedAt: obj?.updated_at ? `${obj.updated_at}` : "", - }; - return new WorkHistoryDto(workHistoryMapping); - }); - - return workHistoryResponse; - } -} diff --git a/src/app.module.ts b/src/app.module.ts index 0067f7b0..e2e05bae 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -7,7 +7,6 @@ import { AppService } from "./app.service"; /* import { ConfigurationModule } from "./configs/configuration.module"; -import { WorkHistoryModule } from "./workHistory/workHistory.module"; */ // In use for Shiksha 2.0 import { DatabaseModule } from "./common/database.module"; diff --git a/src/workHistory/dto/user-work-history.dto.ts b/src/workHistory/dto/user-work-history.dto.ts deleted file mode 100644 index 9886c824..00000000 --- a/src/workHistory/dto/user-work-history.dto.ts +++ /dev/null @@ -1,354 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; -import { IsEmail } from "class-validator"; - -export class UserWorkHistoryDto { - @Expose() - workHistoryId: string; - - @ApiProperty({ - type: String, - description: "ID of the user for which posting info is stored", - }) - @Expose() - userId: string; - - @ApiProperty({ - type: String, - description: "role of the user ", - }) - @Expose() - role: string; - - @ApiProperty({ - type: String, - description: "Designation of the user at time of joining that posting", - }) - @Expose() - joiningDesignation: string; - - @ApiProperty({ - type: String, - description: "Designation of the user while leaving that posting", - }) - @Expose() - leavingDesignation: string; - - @ApiProperty({ - type: String, - description: "Date of joining in that posting", - default: new Date().toISOString().split("T")[0], - }) - @Expose() - dateOfJoining: Date; - - @ApiProperty({ - type: String, - description: "Date of relieving from that posting", - default: new Date().toISOString().split("T")[0], - }) - @Expose() - dateOfRelieving: Date; - - @ApiProperty({ - type: String, - description: "Reason of closure of that posting", - }) - @Expose() - reason: string; - - @ApiProperty({ - type: String, - description: "any remark", - }) - @Expose() - remark: string; - - @ApiProperty({}) - @Expose() - cadre: string; - - @ApiProperty({}) - @Expose() - transferOrderNumber: string; - - @ApiProperty({}) - @Expose() - placeOfPosting: string; - - @ApiProperty({ - default: new Date().toISOString().split("T")[0], - }) - @Expose() - dateOfOrder: string; - - @ApiProperty({}) - @Expose() - modeOfPosting: string; - - @ApiProperty() - @Expose() - refId1: string; - - @ApiProperty() - @Expose() - refId2: string; - - @ApiProperty() - @Expose() - refId3: string; - - @ApiProperty({ - type: String, - description: "The first name of the user", - }) - @Expose() - firstName: string; - - @ApiProperty({ - type: String, - description: "The middle name of the user", - }) - @Expose() - middleName: string; - - @ApiProperty({ - type: String, - description: "The lastname of the user", - }) - @Expose() - lastName: string; - - @ApiProperty({ - type: String, - description: "The contact number of the user", - }) - @Expose() - phoneNumber: string; - - @ApiProperty({ - type: String, - description: "The email of the user", - }) - @Expose() - @IsEmail() - email: string; - - @ApiProperty() - @Expose() - aadhaar: string; - - @ApiProperty({ - type: String, - description: "The gender of the user", - }) - @Expose() - gender: string; - - @ApiProperty({ - type: String, - description: "The socialCategory of the user", - }) - @Expose() - socialCategory: string; - - @ApiProperty({ - type: String, - description: "The birthDate of the user", - }) - @Expose() - birthDate: string; - - @ApiProperty({ - type: String, - description: "The designation of the user", - }) - @Expose() - designation: string; - - @ApiProperty({ - type: String, - description: "The profQualification of the user", - }) - @Expose() - profQualification: string; - - @ApiProperty({ - type: String, - description: "The joiningDate of the user", - }) - @Expose() - joiningDate: string; - - @ApiProperty({ - type: [String], - description: "The subjectId of the user", - }) - @Expose() - subjectIds: [string]; - - @ApiProperty({ - type: String, - description: "The bloodGroup of the user", - }) - @Expose() - bloodGroup: string; - - @ApiProperty({ - type: String, - description: "The maritalStatus of the user", - }) - @Expose() - maritalStatus: string; - - @ApiProperty({ - type: String, - description: "The compSkills of the user", - }) - @Expose() - compSkills: string; - - @ApiProperty({ - type: String, - description: "The disability of the user", - }) - @Expose() - disability: string; - - @ApiProperty({ - type: String, - description: "The religion of the user", - }) - @Expose() - religion: string; - - @ApiProperty({ - type: String, - description: "The homeDistance of the user", - }) - @Expose() - homeDistance: string; - - @ApiProperty({ - type: String, - description: "The schoolId of the user", - }) - @Expose() - schoolId: string; - - @ApiPropertyOptional() - @Expose() - address: string; - - @ApiProperty() - @Expose() - village: string; - - @ApiProperty() - @Expose() - block: string; - - @ApiProperty() - @Expose() - district: string; - - @ApiProperty() - @Expose() - stateId: string; - - @ApiProperty() - @Expose() - pincode: string; - - @ApiProperty() - @Expose() - locationId: string; - - @ApiProperty({ - type: String, - description: "The retirementDate of the user", - }) - @Expose() - retirementDate: string; - - @ApiProperty({ - type: String, - description: "The workingStatus of the user", - }) - @Expose() - workingStatus: string; - - @ApiProperty({ - type: String, - description: "The image of the user", - }) - @Expose() - image: string; - - @ApiProperty({ - type: String, - description: "The employmentType of the user", - }) - @Expose() - employmentType: string; - - @ApiProperty({ - type: String, - description: "The status of the user", - }) - @Expose() - status: string; - - @ApiProperty({ - type: String, - description: "The deactivation reason of the user", - }) - @Expose() - deactivationReason: string; - - @Expose() - workHistory: string; - - @ApiProperty() - @Expose() - reportsTo: string; - - @ApiPropertyOptional() - @Expose() - metaData: [string]; - - @ApiPropertyOptional() - @Expose() - fcmToken: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - constructor(obj: any) { - this.workHistoryId = obj?.workHistoryId ? `${obj.workHistoryId}` : ""; - this.userId = obj?.userId ? `${obj.userId}` : ""; - this.role = obj?.role ? `${obj.role}` : ""; - this.joiningDesignation = obj?.joiningDesignation - ? `${obj.joiningDesignation}` - : ""; - this.leavingDesignation = obj?.leavingDesignation - ? `${obj.leavingDesignation}` - : ""; - this.dateOfJoining = obj?.dateOfJoining ? obj.dateOfJoining : ""; - this.dateOfRelieving = obj?.dateOfRelieving ? obj.dateOfRelieving : ""; - this.reason = obj?.reason ? `${obj.reason}` : ""; - this.remark = obj?.remark ? `${obj.remark}` : ""; - this.cadre = obj?.cadre ? `${obj.cadre}` : ""; - this.transferOrderNumber = obj?.transferOrderNumber - ? `${obj.transferOrderNumber}` - : ""; - this.placeOfPosting = obj?.placeOfPosting ? `${obj.placeOfPosting}` : ""; - this.dateOfOrder = obj?.dateOfOrder ? obj.dateOfOrder : ""; - this.modeOfPosting = obj?.modeOfPosting ? `${obj.modeOfPosting}` : ""; - this.createdAt = obj?.created_at ? `${obj.created_at}` : ""; - this.updatedAt = obj?.updated_at ? `${obj.updated_at}` : ""; - } -} diff --git a/src/workHistory/dto/work-history.dto.ts b/src/workHistory/dto/work-history.dto.ts deleted file mode 100644 index dd4ae301..00000000 --- a/src/workHistory/dto/work-history.dto.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { Expose } from "class-transformer"; -import { ApiProperty } from "@nestjs/swagger"; - -export class WorkHistoryDto { - @Expose() - workHistoryId: string; - - @Expose() - id: string; - - @ApiProperty({ - type: String, - description: "ID of the user for which posting info is stored", - }) - @Expose() - userId: string; - - @ApiProperty({ - type: String, - description: "role of the user ", - }) - @Expose() - role: string; - - @ApiProperty({ - type: String, - description: "Designation of the user at time of joining that posting", - }) - @Expose() - joiningDesignation: string; - - @ApiProperty({ - type: String, - description: "Designation of the user while leaving that posting", - }) - @Expose() - leavingDesignation: string; - - @ApiProperty({ - type: String, - description: "Date of joining in that posting", - default: new Date().toISOString().split("T")[0], - }) - @Expose() - dateOfJoining: Date; - - @ApiProperty({ - type: String, - description: "Date of relieving from that posting", - default: new Date().toISOString().split("T")[0], - }) - @Expose() - dateOfRelieving: Date; - - @ApiProperty({ - type: String, - description: "Reason of closure of that posting", - }) - @Expose() - reason: string; - - @ApiProperty({ - type: String, - description: "any remark", - }) - @Expose() - remark: string; - - @ApiProperty({}) - @Expose() - cadre: string; - - @ApiProperty({}) - @Expose() - transferOrderNumber: string; - - @ApiProperty({}) - @Expose() - placeOfPosting: string; - - @ApiProperty({ - default: new Date().toISOString().split("T")[0], - }) - @Expose() - dateOfOrder: string; - - @ApiProperty({}) - @Expose() - modeOfPosting: string; - - @ApiProperty({}) - @Expose() - organizationName: string; - - @Expose() - createdAt: string; - - @Expose() - updatedAt: string; - - constructor(obj: any) { - Object.assign(this, obj); - } -} diff --git a/src/workHistory/workHistory.controller.ts b/src/workHistory/workHistory.controller.ts deleted file mode 100644 index 3f822c79..00000000 --- a/src/workHistory/workHistory.controller.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { - ApiBasicAuth, - ApiBody, - ApiCreatedResponse, - ApiExcludeController, - ApiForbiddenResponse, - ApiOkResponse, - ApiQuery, - ApiTags, -} from "@nestjs/swagger"; -import { - Body, - ClassSerializerInterceptor, - Controller, - Get, - Param, - Query, - Post, - Put, - Req, - SerializeOptions, - UseInterceptors, - Request, -} from "@nestjs/common"; - -import { WorkHistoryService } from "../adapters/hasura/workhistory.adapter"; -import { WorkHistoryDto } from "./dto/work-history.dto"; - -// @ApiTags("Work History") -@ApiExcludeController() -@Controller("workhistory") -export class WorkHistoryController { - constructor(private service: WorkHistoryService) {} - - @Post() - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Work History has been created successfully.", - // }) - // @ApiBody({ type: WorkHistoryDto }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async createWorkHistory( - @Req() request: Request, - @Body() workHistoryDto: WorkHistoryDto - ) { - return this.service.createWorkHistory(request, workHistoryDto); - } - - @Put("/:id") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ - // description: "Work History has been updated successfully.", - // }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - @UseInterceptors(ClassSerializerInterceptor) - public async updateWorkHistory( - @Param("id") id: string, - @Req() request: Request, - @Body() workHistoryDto: WorkHistoryDto - ) { - return await this.service.updateWorkHistory(id, request, workHistoryDto); - } - - @Get("/:id") - @UseInterceptors(ClassSerializerInterceptor) - @ApiBasicAuth("access-token") - @ApiOkResponse({ description: "Work History detail." }) - @ApiForbiddenResponse({ description: "Forbidden" }) - @SerializeOptions({ - strategy: "excludeAll", - }) - public async getWorkHistory( - @Param("id") workHistoryId: string, - @Req() request: Request - ) { - return await this.service.getWorkHistory(workHistoryId, request); - } - - @Post("/search") - // @ApiBasicAuth("access-token") - // @ApiCreatedResponse({ description: "Work History list." }) - // @ApiForbiddenResponse({ description: "Forbidden" }) - // @UseInterceptors(ClassSerializerInterceptor) - // @ApiQuery({ name: "limit", required: false }) - // @ApiQuery({ name: "workHistoryId", required: false }) - // @ApiQuery({ name: "userId", required: false }) - // @ApiQuery({ name: "dateOfJoining", required: false }) - // @ApiQuery({ name: "dateOfRelieving", required: false }) - // @ApiQuery({ name: "page", required: false }) - public async searchWorkHistory( - @Query("limit") limit: string, - @Query("workHistoryId") workHistoryId: string, - @Query("userId") userId: string, - @Query("dateOfJoining") dateOfJoining: string, - @Query("dateOfRelieving") dateOfRelieving: string, - @Query("page") page: number, - @Req() request: Request - ) { - return await this.service.searchWorkHistory( - limit, - workHistoryId, - userId, - dateOfJoining, - dateOfRelieving, - page, - request - ); - } -} diff --git a/src/workHistory/workHistory.module.ts b/src/workHistory/workHistory.module.ts deleted file mode 100644 index 6c8eeeaf..00000000 --- a/src/workHistory/workHistory.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Module } from "@nestjs/common"; -import { HttpModule } from "@nestjs/axios"; -import { WorkHistoryService } from "../adapters/hasura/workhistory.adapter"; -import { WorkHistoryController } from "./workHistory.controller"; - -@Module({ - imports: [HttpModule], - controllers: [WorkHistoryController], - providers: [WorkHistoryService], -}) -export class WorkHistoryModule {}