426 lines
13 KiB
TypeScript
426 lines
13 KiB
TypeScript
import { GraphQLError } from "graphql";
|
|
import {
|
|
AddUserToOrganizationInput,
|
|
CreateOrganizationInput,
|
|
CreateOrganizationInvitationInput,
|
|
OrganizationAPITestResponse,
|
|
OrganizationInvitationResponse,
|
|
OrganizationInvitationsResponse,
|
|
OrganizationPermissionsResponse,
|
|
OrganizationResponse,
|
|
OrganizationRolesResponse,
|
|
OrganizationsListResponse,
|
|
OrganizationUsersResponse,
|
|
RemoveUserFromOrganizationInput,
|
|
UpdateOrganizationInput,
|
|
UpdateUserOrganizationRolesInput,
|
|
} from "../../../types/Organization";
|
|
import { GraphQLContext } from "../../context/types";
|
|
import {
|
|
acceptOrganizationInvitation,
|
|
addUserToOrganization,
|
|
createOrganization,
|
|
createOrganizationInvitation,
|
|
deleteOrganization,
|
|
getOrganization,
|
|
getOrganizationInvitations,
|
|
getOrganizationPermissions,
|
|
getOrganizationRoles,
|
|
getOrganizations,
|
|
getOrganizationUsers,
|
|
getUserOrganizations,
|
|
removeUserFromOrganization,
|
|
resendOrganizationInvitation,
|
|
revokeOrganizationInvitation,
|
|
testOrganizationsAPI,
|
|
updateOrganization,
|
|
updateUserOrganizationRoles,
|
|
} from "./organizationService";
|
|
|
|
export const organizationResolvers = {
|
|
Query: {
|
|
async testOrganizationsAPI(): Promise<OrganizationAPITestResponse> {
|
|
try {
|
|
const result = await testOrganizationsAPI();
|
|
return result;
|
|
} catch (error) {
|
|
console.error("Erreur dans testOrganizationsAPI resolver:", error);
|
|
return {
|
|
available: false,
|
|
message: error instanceof Error ? error.message : "Erreur lors du test de l'API",
|
|
};
|
|
}
|
|
},
|
|
|
|
async organizations(
|
|
_parent: unknown,
|
|
args: { page?: number; pageSize?: number }
|
|
): Promise<OrganizationsListResponse> {
|
|
try {
|
|
const { page = 1, pageSize = 10 } = args;
|
|
const result = await getOrganizations(page, pageSize);
|
|
|
|
return {
|
|
success: true,
|
|
organizations: result.organizations,
|
|
totalCount: result.totalCount,
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans organizations resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la récupération des organisations",
|
|
};
|
|
}
|
|
},
|
|
|
|
async organization(_parent: unknown, args: { id: string }): Promise<OrganizationResponse> {
|
|
try {
|
|
const organization = await getOrganization(args.id);
|
|
|
|
if (!organization) {
|
|
return {
|
|
success: false,
|
|
message: "Organisation non trouvée",
|
|
};
|
|
}
|
|
|
|
return {
|
|
success: true,
|
|
organization,
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans organization resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la récupération de l'organisation",
|
|
};
|
|
}
|
|
},
|
|
|
|
async organizationUsers(
|
|
_parent: unknown,
|
|
args: { organizationId: string; page?: number; pageSize?: number }
|
|
): Promise<OrganizationUsersResponse> {
|
|
try {
|
|
const { organizationId, page = 1, pageSize = 10 } = args;
|
|
const result = await getOrganizationUsers(organizationId, page, pageSize);
|
|
|
|
return {
|
|
success: true,
|
|
users: result.users,
|
|
totalCount: result.totalCount,
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans organizationUsers resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la récupération des utilisateurs",
|
|
};
|
|
}
|
|
},
|
|
|
|
async organizationRoles(
|
|
_parent: unknown,
|
|
args: { organizationId: string; page?: number; pageSize?: number }
|
|
): Promise<OrganizationRolesResponse> {
|
|
try {
|
|
const { organizationId, page = 1, pageSize = 10 } = args;
|
|
const result = await getOrganizationRoles(organizationId, page, pageSize);
|
|
|
|
return {
|
|
success: true,
|
|
roles: result.roles,
|
|
totalCount: result.totalCount,
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans organizationRoles resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la récupération des rôles",
|
|
};
|
|
}
|
|
},
|
|
|
|
async organizationPermissions(
|
|
_parent: unknown,
|
|
args: { organizationId: string; page?: number; pageSize?: number }
|
|
): Promise<OrganizationPermissionsResponse> {
|
|
try {
|
|
const { organizationId, page = 1, pageSize = 10 } = args;
|
|
const result = await getOrganizationPermissions(organizationId, page, pageSize);
|
|
|
|
return {
|
|
success: true,
|
|
permissions: result.permissions,
|
|
totalCount: result.totalCount,
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans organizationPermissions resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la récupération des permissions",
|
|
};
|
|
}
|
|
},
|
|
|
|
async organizationInvitations(
|
|
_parent: unknown,
|
|
args: { organizationId: string; page?: number; pageSize?: number }
|
|
): Promise<OrganizationInvitationsResponse> {
|
|
try {
|
|
const { organizationId, page = 1, pageSize = 10 } = args;
|
|
const result = await getOrganizationInvitations(organizationId, page, pageSize);
|
|
|
|
return {
|
|
success: true,
|
|
invitations: result.invitations,
|
|
totalCount: result.totalCount,
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans organizationInvitations resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la récupération des invitations",
|
|
};
|
|
}
|
|
},
|
|
|
|
async myOrganizations(
|
|
_parent: unknown,
|
|
args: { page?: number; pageSize?: number },
|
|
context: GraphQLContext
|
|
): Promise<OrganizationsListResponse> {
|
|
try {
|
|
const userId = context.user?.id || context.userId;
|
|
if (!userId) {
|
|
return {
|
|
success: false,
|
|
message: "Authentification requise",
|
|
};
|
|
}
|
|
|
|
const { page = 1, pageSize = 10 } = args;
|
|
const result = await getUserOrganizations(userId, page, pageSize);
|
|
|
|
return {
|
|
success: true,
|
|
organizations: result.organizations,
|
|
totalCount: result.totalCount,
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans myOrganizations resolver:", error);
|
|
return {
|
|
success: false,
|
|
message:
|
|
error instanceof GraphQLError ? error.message : "Erreur lors de la récupération de vos organisations",
|
|
};
|
|
}
|
|
},
|
|
},
|
|
|
|
Mutation: {
|
|
async createOrganization(
|
|
_parent: unknown,
|
|
args: { input: CreateOrganizationInput }
|
|
): Promise<OrganizationResponse> {
|
|
try {
|
|
const organization = await createOrganization(args.input);
|
|
|
|
return {
|
|
success: true,
|
|
organization,
|
|
message: "Organisation créée avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans createOrganization resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la création de l'organisation",
|
|
};
|
|
}
|
|
},
|
|
|
|
async updateOrganization(
|
|
_parent: unknown,
|
|
args: { input: UpdateOrganizationInput }
|
|
): Promise<OrganizationResponse> {
|
|
try {
|
|
const organization = await updateOrganization(args.input);
|
|
|
|
return {
|
|
success: true,
|
|
organization,
|
|
message: "Organisation mise à jour avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans updateOrganization resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la mise à jour de l'organisation",
|
|
};
|
|
}
|
|
},
|
|
|
|
async deleteOrganization(_parent: unknown, args: { id: string }): Promise<OrganizationResponse> {
|
|
try {
|
|
await deleteOrganization(args.id);
|
|
|
|
return {
|
|
success: true,
|
|
message: "Organisation supprimée avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans deleteOrganization resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la suppression de l'organisation",
|
|
};
|
|
}
|
|
},
|
|
|
|
async addUserToOrganization(
|
|
_parent: unknown,
|
|
args: { input: AddUserToOrganizationInput }
|
|
): Promise<OrganizationResponse> {
|
|
try {
|
|
await addUserToOrganization(args.input);
|
|
|
|
return {
|
|
success: true,
|
|
message: "Utilisateur ajouté à l'organisation avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans addUserToOrganization resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de l'ajout de l'utilisateur",
|
|
};
|
|
}
|
|
},
|
|
|
|
async removeUserFromOrganization(
|
|
_parent: unknown,
|
|
args: { input: RemoveUserFromOrganizationInput }
|
|
): Promise<OrganizationResponse> {
|
|
try {
|
|
await removeUserFromOrganization(args.input);
|
|
|
|
return {
|
|
success: true,
|
|
message: "Utilisateur supprimé de l'organisation avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans removeUserFromOrganization resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la suppression de l'utilisateur",
|
|
};
|
|
}
|
|
},
|
|
|
|
async updateUserOrganizationRoles(
|
|
_parent: unknown,
|
|
args: { input: UpdateUserOrganizationRolesInput }
|
|
): Promise<OrganizationResponse> {
|
|
try {
|
|
await updateUserOrganizationRoles(args.input);
|
|
|
|
return {
|
|
success: true,
|
|
message: "Rôles de l'utilisateur mis à jour avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans updateUserOrganizationRoles resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la mise à jour des rôles",
|
|
};
|
|
}
|
|
},
|
|
|
|
async createOrganizationInvitation(
|
|
_parent: unknown,
|
|
args: { input: CreateOrganizationInvitationInput }
|
|
): Promise<OrganizationInvitationResponse> {
|
|
try {
|
|
const invitation = await createOrganizationInvitation(args.input);
|
|
|
|
return {
|
|
success: true,
|
|
invitation,
|
|
message: "Invitation créée avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans createOrganizationInvitation resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la création de l'invitation",
|
|
};
|
|
}
|
|
},
|
|
|
|
async resendOrganizationInvitation(
|
|
_parent: unknown,
|
|
args: { invitationId: string }
|
|
): Promise<OrganizationInvitationResponse> {
|
|
try {
|
|
const invitation = await resendOrganizationInvitation(args.invitationId);
|
|
|
|
return {
|
|
success: true,
|
|
invitation,
|
|
message: "Invitation renvoyée avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans resendOrganizationInvitation resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors du renvoi de l'invitation",
|
|
};
|
|
}
|
|
},
|
|
|
|
async revokeOrganizationInvitation(
|
|
_parent: unknown,
|
|
args: { invitationId: string }
|
|
): Promise<OrganizationInvitationResponse> {
|
|
try {
|
|
await revokeOrganizationInvitation(args.invitationId);
|
|
|
|
return {
|
|
success: true,
|
|
message: "Invitation révoquée avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans revokeOrganizationInvitation resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de la révocation de l'invitation",
|
|
};
|
|
}
|
|
},
|
|
|
|
async acceptOrganizationInvitation(
|
|
_parent: unknown,
|
|
args: { invitationId: string }
|
|
): Promise<OrganizationInvitationResponse> {
|
|
try {
|
|
const invitation = await acceptOrganizationInvitation(args.invitationId);
|
|
|
|
return {
|
|
success: true,
|
|
invitation,
|
|
message: "Invitation acceptée avec succès",
|
|
};
|
|
} catch (error) {
|
|
console.error("Erreur dans acceptOrganizationInvitation resolver:", error);
|
|
return {
|
|
success: false,
|
|
message: error instanceof GraphQLError ? error.message : "Erreur lors de l'acceptation de l'invitation",
|
|
};
|
|
}
|
|
},
|
|
},
|
|
};
|