refactor: add service method to take invitee email and team ID as string to fetch invitation
This commit is contained in:
committed by
Andrew Bastin
parent
039de8015f
commit
f19dc700ef
@@ -3,6 +3,7 @@ import * as T from 'fp-ts/Task';
|
|||||||
import * as O from 'fp-ts/Option';
|
import * as O from 'fp-ts/Option';
|
||||||
import * as TO from 'fp-ts/TaskOption';
|
import * as TO from 'fp-ts/TaskOption';
|
||||||
import * as TE from 'fp-ts/TaskEither';
|
import * as TE from 'fp-ts/TaskEither';
|
||||||
|
import * as E from 'fp-ts/Either';
|
||||||
import { pipe, flow, constVoid } from 'fp-ts/function';
|
import { pipe, flow, constVoid } from 'fp-ts/function';
|
||||||
import { PrismaService } from 'src/prisma/prisma.service';
|
import { PrismaService } from 'src/prisma/prisma.service';
|
||||||
import { Team, TeamMemberRole } from 'src/team/team.model';
|
import { Team, TeamMemberRole } from 'src/team/team.model';
|
||||||
@@ -10,6 +11,7 @@ import { Email } from 'src/types/Email';
|
|||||||
import { User } from 'src/user/user.model';
|
import { User } from 'src/user/user.model';
|
||||||
import { TeamService } from 'src/team/team.service';
|
import { TeamService } from 'src/team/team.service';
|
||||||
import {
|
import {
|
||||||
|
INVALID_EMAIL,
|
||||||
TEAM_INVITE_ALREADY_MEMBER,
|
TEAM_INVITE_ALREADY_MEMBER,
|
||||||
TEAM_INVITE_EMAIL_DO_NOT_MATCH,
|
TEAM_INVITE_EMAIL_DO_NOT_MATCH,
|
||||||
TEAM_INVITE_MEMBER_HAS_INVITE,
|
TEAM_INVITE_MEMBER_HAS_INVITE,
|
||||||
@@ -19,6 +21,7 @@ import { TeamInvitation } from './team-invitation.model';
|
|||||||
import { MailerService } from 'src/mailer/mailer.service';
|
import { MailerService } from 'src/mailer/mailer.service';
|
||||||
import { UserService } from 'src/user/user.service';
|
import { UserService } from 'src/user/user.service';
|
||||||
import { PubSubService } from 'src/pubsub/pubsub.service';
|
import { PubSubService } from 'src/pubsub/pubsub.service';
|
||||||
|
import { validateEmail } from '../utils';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TeamInvitationService {
|
export class TeamInvitationService {
|
||||||
@@ -63,6 +66,32 @@ export class TeamInvitationService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the team invite for an invitee with email and teamID.
|
||||||
|
* @param inviteeEmail invitee email
|
||||||
|
* @param teamID team id
|
||||||
|
* @returns an Either of team invitation for the invitee or error
|
||||||
|
*/
|
||||||
|
async getTeamInviteByEmailAndTeamID(inviteeEmail: string, teamID: string) {
|
||||||
|
const isEmailValid = validateEmail(inviteeEmail);
|
||||||
|
if (!isEmailValid) return E.left(INVALID_EMAIL);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const teamInvite = await this.prisma.teamInvitation.findUniqueOrThrow({
|
||||||
|
where: {
|
||||||
|
teamID_inviteeEmail: {
|
||||||
|
inviteeEmail: inviteeEmail,
|
||||||
|
teamID: teamID,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return E.right(teamInvite);
|
||||||
|
} catch (e) {
|
||||||
|
return E.left(TEAM_INVITE_NO_INVITE_FOUND);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
createInvitation(
|
createInvitation(
|
||||||
creator: User,
|
creator: User,
|
||||||
team: Team,
|
team: Team,
|
||||||
|
|||||||
Reference in New Issue
Block a user