Skip to content

Commit

Permalink
Merge branch 'altv1' of github.com:transform1234/alt-backend into stu…
Browse files Browse the repository at this point in the history
…dent-user-apis
  • Loading branch information
Xitija committed Sep 14, 2023
2 parents 3d2909d + 5877da8 commit a445b7b
Show file tree
Hide file tree
Showing 4 changed files with 156 additions and 112 deletions.
99 changes: 52 additions & 47 deletions src/adapters/hasura/group.adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import { IServicelocatorgroup } from "../groupservicelocator";
import { UserDto } from "src/user/dto/user.dto";
import { StudentDto } from "src/student/dto/student.dto";
export const HasuraGroupToken = "HasuraGroup";
import { getUserGroup, getUserRole } from "./adapter.utils";

@Injectable()
export class HasuraGroupService implements IServicelocatorgroup {
private group: GroupInterface;
Expand All @@ -20,25 +22,25 @@ export class HasuraGroupService implements IServicelocatorgroup {
constructor(private httpService: HttpService) {}

public async getGroup(request: any, groupId: any) {
const decoded: any = jwt_decode(request.headers.authorization);
const altUserRoles =
decoded["https://hasura.io/jwt/claims"]["x-hasura-allowed-roles"];
var groupDetails = {
query: `query GetGroup($groupId:uuid!) {
Group_by_pk(groupId: $groupId) {
groupId
deactivationReason
created_at
image
mediumOfInstruction
metaData
name
option
schoolId
section
teacherId
gradeLevel
status
type
updated_at
parentGroupId
groupId
schoolUdise
medium
grade
name
type
section
status
createdAt
updatedAt
createdBy
updatedBy
board
}
}`,
variables: {
Expand All @@ -50,7 +52,9 @@ export class HasuraGroupService implements IServicelocatorgroup {
method: "post",
url: process.env.ALTHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"x-hasura-role": getUserRole(altUserRoles),

"Content-Type": "application/json",
},
data: groupDetails,
Expand All @@ -76,6 +80,13 @@ export class HasuraGroupService implements IServicelocatorgroup {
}

public async createGroup(request: any, groupDto: GroupDto) {
const decoded: any = jwt_decode(request.headers.authorization);
const altUserRoles =
decoded["https://hasura.io/jwt/claims"]["x-hasura-allowed-roles"];
const userId =
decoded["https://hasura.io/jwt/claims"]["x-hasura-user-id"];
groupDto.createdBy = userId;
groupDto.updatedBy = userId;
let query = "";
Object.keys(groupDto).forEach((e) => {
if (groupDto[e] && groupDto[e] != "") {
Expand Down Expand Up @@ -103,7 +114,9 @@ export class HasuraGroupService implements IServicelocatorgroup {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"x-hasura-role": getUserRole(altUserRoles),

"Content-Type": "application/json",
},
data: data,
Expand Down Expand Up @@ -156,7 +169,7 @@ export class HasuraGroupService implements IServicelocatorgroup {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"Content-Type": "application/json",
},
data: data,
Expand Down Expand Up @@ -256,7 +269,7 @@ export class HasuraGroupService implements IServicelocatorgroup {
public async findMembersOfGroup(groupId: string, role: string, request: any) {
let axios = require("axios");
let userData = [];

var findMember = {
query: `query GetGroupMembership($groupId:uuid,$role:UserRole_enum) {
GroupMembership(where: {groupId: {_eq: $groupId}, role: {_eq: $role}}) {
Expand Down Expand Up @@ -302,7 +315,7 @@ export class HasuraGroupService implements IServicelocatorgroup {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"Content-Type": "application/json",
},
data: findMember,
Expand All @@ -317,28 +330,27 @@ export class HasuraGroupService implements IServicelocatorgroup {
});
}

let result = response.data.data.GroupMembership;
let result = response.data.data.GroupMembership;

const userList = result.map((e: any) => {
return e.User;
});
if (!userList.length) {

if (!userList.length) {
return new SuccessResponse({
statusCode: 200,
message: "ok",
data: { msg: "No data found for given inputs!" },
});
}
}

const groupResponse = await this.userMappedResponse(userList);

return new SuccessResponse({
statusCode: 200,
message: "ok",
data: groupResponse,
});

}

public async findGroupsByUserId(userId: string, role: string, request: any) {
Expand Down Expand Up @@ -377,26 +389,26 @@ export class HasuraGroupService implements IServicelocatorgroup {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"Content-Type": "application/json",
},
data: findMember,
};
const response = await axios(getMemberData);

if (response?.data?.errors) {
return new ErrorResponse({
errorCode: response.data.errors[0].extensions,
errorMessage: response.data.errors[0].message,
});
}

let groupData = response.data.data.GroupMembership;

const groupList = groupData.map((e: any) => {
return e.Group;
});

const groupResponse = await this.mappedResponse(groupList);
return new SuccessResponse({
statusCode: 200,
Expand Down Expand Up @@ -512,29 +524,22 @@ export class HasuraGroupService implements IServicelocatorgroup {
const groupResponse = result.map((item: any) => {
const groupMapping = {
groupId: item?.groupId ? `${item.groupId}` : "",
schoolId: item?.schoolId ? `${item.schoolId}` : "",
schoolUdise: item?.schoolUdise ? `${item.schoolUdise}` : "",
name: item?.name ? `${item.name}` : "",
grade: item?.grade ? `${item.grade}` : "",
medium: item?.medium ? `${item.medium}` : "",
type: item?.type ? `${item.type}` : "",
section: item?.section ? `${item.section}` : "",
status: item?.status ? `${item.status}` : "",
deactivationReason: item?.deactivationReason
? `${item.deactivationReason}`
: "",
mediumOfInstruction: item?.mediumOfInstruction
? `${item.mediumOfInstruction}`
: "",
teacherId: item?.teacherId ? `${item.teacherId}` : "",
parentGroupId: item?.parentGroupId ? `${item.parentGroupId}` : "",
image: item?.image ? `${item.image}` : "",
metaData: item?.metaData ? item.metaData : [],
option: item?.option ? item.option : [],
gradeLevel: item?.gradeLevel ? `${item.gradeLevel}` : "",
createdAt: item?.created_at ? `${item.created_at}` : "",
updatedAt: item?.updated_at ? `${item.updated_at}` : "",
createdAt: item?.createdAt ? `${item.createdAt}` : "",
updatedAt: item?.updatedAt ? `${item.updatedAt}` : "",
createdBy: item?.createdBy ? `${item.createdBy}` : "",
updatedBy: item?.updatedBy ? `${item.updatedBy}` : "",
board: item?.board ? `${item.board}` : "",
};
return new GroupDto(groupMapping);
});

return groupResponse;
}

Expand Down
68 changes: 40 additions & 28 deletions src/adapters/hasura/groupMembership.adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,13 @@ import { HttpService } from "@nestjs/axios";
import { SuccessResponse } from "src/success-response";
import { ErrorResponse } from "src/error-response";
import jwt_decode from "jwt-decode";
import { getUserGroup, getUserRole } from "./adapter.utils";

const resolvePath = require("object-resolve-path");
import { GroupMembershipDto, GroupMembershipDtoById } from "src/groupMembership/dto/groupMembership.dto";
import {
GroupMembershipDto,
GroupMembershipDtoById,
} from "src/groupMembership/dto/groupMembership.dto";
import { GroupMembershipSearchDto } from "src/groupMembership/dto/groupMembership-search.dto";

@Injectable()
Expand All @@ -14,18 +19,21 @@ export class GroupMembershipService {
url = `${process.env.BASEAPIURL}`;

public async getGroupMembership(groupMembershipId: any, request: any) {
const decoded: any = jwt_decode(request.headers.authorization);
const altUserRoles =
decoded["https://hasura.io/jwt/claims"]["x-hasura-allowed-roles"];
var data = {
query: `query GetGroupMembership($groupMembershipId:uuid!) {
GroupMembership_by_pk(groupMembershipId: $groupMembershipId) {
groupId
groupMembershipId
schoolId
role
userId
updatedBy
createdBy
updated_at
created_at
groupMembershipId
schoolUdise
userId
groupId
role
createdBy
updatedBy
createdAt
updatedAt
}
}`,
variables: {
Expand All @@ -37,7 +45,9 @@ export class GroupMembershipService {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"x-hasura-role": getUserRole(altUserRoles),

"Content-Type": "application/json",
},
data: data,
Expand Down Expand Up @@ -68,12 +78,9 @@ export class GroupMembershipService {
groupMembership: GroupMembershipDto
) {
const decoded: any = jwt_decode(request.headers.authorization);
groupMembership.userId =
const altUserRoles =
decoded["https://hasura.io/jwt/claims"]["x-hasura-user-id"];

groupMembership.createdBy = groupMembership.userId;
groupMembership.updatedBy = groupMembership.userId;

let query = "";
Object.keys(groupMembership).forEach((e) => {
if (groupMembership[e] && groupMembership[e] != "") {
Expand Down Expand Up @@ -101,7 +108,9 @@ export class GroupMembershipService {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"x-hasura-role": getUserGroup(altUserRoles),

"Content-Type": "application/json",
},
data: data,
Expand Down Expand Up @@ -130,11 +139,11 @@ export class GroupMembershipService {
groupMembership: GroupMembershipDtoById
) {
const decoded: any = jwt_decode(request.headers.authorization);
// groupMembership.userId =
// decoded["https://hasura.io/jwt/claims"]["x-hasura-user-id"];

groupMembership.createdBy = groupMembership.userId;
groupMembership.updatedBy = groupMembership.userId;
const altUserRoles =
decoded["https://hasura.io/jwt/claims"]["x-hasura-allowed-roles"];
const userId = decoded["https://hasura.io/jwt/claims"]["x-hasura-user-id"];
groupMembership.createdBy = userId;
groupMembership.updatedBy = userId;

let query = "";
Object.keys(groupMembership).forEach((e) => {
Expand Down Expand Up @@ -163,7 +172,9 @@ export class GroupMembershipService {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"x-hasura-role": getUserRole(altUserRoles),

"Content-Type": "application/json",
},
data: data,
Expand Down Expand Up @@ -210,7 +221,7 @@ export class GroupMembershipService {
}
}
});

const groupMembershipUpdate = {
query: `mutation UpdateGroupMembership($groupMembershipId:uuid) {
update_GroupMembership(where: { groupMembershipId: {_eq: $groupMembershipId}}, _set: {${query}}) {
Expand All @@ -226,7 +237,7 @@ export class GroupMembershipService {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"Content-Type": "application/json",
},
data: groupMembershipUpdate,
Expand Down Expand Up @@ -298,7 +309,7 @@ export class GroupMembershipService {
method: "post",
url: process.env.REGISTRYHASURA,
headers: {
"Authorization": request.headers.authorization,
Authorization: request.headers.authorization,
"Content-Type": "application/json",
},
data: data,
Expand Down Expand Up @@ -328,12 +339,13 @@ export class GroupMembershipService {
groupMembershipId: obj?.groupMembershipId
? `${obj.groupMembershipId}`
: "",
groupId: obj?.groupId ? `${obj.groupId}` : "",
schoolUdise: obj?.schoolUdise ? `${obj.schoolUdise}` : "",
schoolId: obj?.schoolId ? `${obj.schoolId}` : "",
userId: obj?.userId ? `${obj.userId}` : "",
groupId: obj?.groupId ? `${obj.groupId}` : "",
role: obj?.role ? `${obj.role}` : "",
created_at: obj?.created_at ? `${obj.created_at}` : "",
updated_at: obj?.updated_at ? `${obj.updated_at}` : "",
createdAt: obj?.created_at ? `${obj.created_at}` : "",
updatedAt: obj?.updated_at ? `${obj.updated_at}` : "",
createdBy: obj?.createdBy ? `${obj.createdBy}` : "",
updatedBy: obj?.updatedBy ? `${obj.updatedBy}` : "",
};
Expand Down
Loading

0 comments on commit a445b7b

Please sign in to comment.