Skip to content
This repository has been archived by the owner on Apr 19, 2023. It is now read-only.

Commit

Permalink
✨ Send membership welcome email
Browse files Browse the repository at this point in the history
  • Loading branch information
AnandChowdhary committed Oct 30, 2020
1 parent 9cdea09 commit 8c7f926
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
4 changes: 3 additions & 1 deletion src/modules/memberships/memberships.module.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { EmailModule } from '../email/email.module';
import { PrismaModule } from '../prisma/prisma.module';
import { GroupMembershipController } from './memberships-group.controller';
import { UserMembershipController } from './memberships-user.controller';
import { MembershipsService } from './memberships.service';

@Module({
imports: [PrismaModule],
imports: [PrismaModule, EmailModule, ConfigModule],
controllers: [UserMembershipController, GroupMembershipController],
providers: [MembershipsService],
})
Expand Down
22 changes: 19 additions & 3 deletions src/modules/memberships/memberships.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
Injectable,
UnauthorizedException,
} from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import {
groupsCreateInput,
memberships,
Expand All @@ -15,17 +16,19 @@ import {
import { safeEmail } from 'src/helpers/safe-email';
import { Expose } from 'src/modules/prisma/prisma.interface';
import { AuthService } from '../auth/auth.service';
import { EmailService } from '../email/email.service';
import { PrismaService } from '../prisma/prisma.service';
import { UsersService } from '../users/users.service';
import { CreateMembershipInput } from './memberships.interface';

@Injectable()
export class MembershipsService {
constructor(
private prisma: PrismaService,
private users: UsersService,
private auth: AuthService,
private email: EmailService,
private configService: ConfigService,
) {}

async getMemberships(params: {
skip?: number;
take?: number;
Expand Down Expand Up @@ -147,13 +150,26 @@ export class MembershipsService {
}),
);
if (!user) user = await this.auth.register(ipAddress, data);
return this.prisma.memberships.create({
const result = await this.prisma.memberships.create({
data: {
role: data.role,
group: { connect: { id: groupId } },
user: { connect: { id: user.id } },
},
include: { group: { select: { name: true } } },
});
this.email.send({
to: `"${user.name}" <${emailSafe}>`,
template: 'groups/invitation',
data: {
name: user.name,
group: result.group.name,
link: `${this.configService.get<string>(
'frontendUrl',
)}/groups/${groupId}`,
},
});
return this.prisma.expose<memberships>(result);
}

/** Verify whether a group membership can be deleted */
Expand Down
9 changes: 9 additions & 0 deletions src/templates/groups/invitation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Welcome to {{ group }}

Hi {{name}},

You've joined the group **{{ group }}**. You can manage your membership by logging to your account.

<a href="{{ link }}" class="btn btn-primary">Visit this group</a>

If you didn't want to be added to {{ group }}, you can log in to your account and leave the group.

0 comments on commit 8c7f926

Please sign in to comment.