Send invitation email ready
This commit is contained in:
parent
832102d1fd
commit
948d661d30
@ -12,11 +12,12 @@ import { validateOrReject } from "class-validator";
|
||||
import ObjectHydrate from "@Common/helpers/ObjectHydrate";
|
||||
import roleHandler from "@App/middlewares/RolesHandler";
|
||||
import authHandler from "@App/middlewares/AuthHandler";
|
||||
import EmailBuilder from "@Common/emails/EmailBuilder";
|
||||
|
||||
@Controller()
|
||||
@Service()
|
||||
export default class SubscriptionsController extends ApiController {
|
||||
constructor(private subscriptionsService: SubscriptionsService) {
|
||||
constructor(private subscriptionsService: SubscriptionsService, private emailBuilder: EmailBuilder) {
|
||||
super();
|
||||
}
|
||||
|
||||
@ -142,4 +143,32 @@ export default class SubscriptionsController extends ApiController {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description Invite collaborators to a subscription
|
||||
*/
|
||||
|
||||
@Post("/api/v1/admin/subscriptions/invite", [authHandler, roleHandler])
|
||||
protected async inviteCollaborators(req: Request, response: Response) {
|
||||
try {
|
||||
//get email list from body
|
||||
const emails: [string] = req.body.emails;
|
||||
if (!emails || emails.length < 1){
|
||||
this.httpBadRequest(response, "No emails provided");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(emails);
|
||||
|
||||
//create emails for asked document
|
||||
await this.emailBuilder.sendInvitationEmails(emails);
|
||||
|
||||
//success
|
||||
this.httpSuccess(response);
|
||||
|
||||
} catch (error) {
|
||||
this.httpInternalError(response, error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -157,6 +157,9 @@ export class BackendVariables {
|
||||
@IsNotEmpty()
|
||||
public readonly STRIPE_PAYMENT_CANCEL_URL!: string;
|
||||
|
||||
@IsNotEmpty()
|
||||
public readonly IDNOT_PROD_BASE_URL!: string;
|
||||
|
||||
public constructor() {
|
||||
dotenv.config();
|
||||
this.DATABASE_PORT = process.env["DATABASE_PORT"]!;
|
||||
@ -210,6 +213,7 @@ export class BackendVariables {
|
||||
this.STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID = process.env["STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID"]!;
|
||||
this.STRIPE_PAYMENT_SUCCESS_URL = process.env["STRIPE_PAYMENT_SUCCESS_URL"]!;
|
||||
this.STRIPE_PAYMENT_CANCEL_URL = process.env["STRIPE_PAYMENT_CANCEL_URL"]!;
|
||||
this.IDNOT_PROD_BASE_URL = process.env["IDNOT_PROD_BASE_URL"]!;
|
||||
}
|
||||
public async validate(groups?: string[]) {
|
||||
const validationOptions = groups ? { groups } : undefined;
|
||||
|
@ -106,4 +106,32 @@ export default class EmailBuilder {
|
||||
if (civility === "MALE") return "Mr";
|
||||
else return "Mme";
|
||||
}
|
||||
|
||||
public async sendInvitationEmails(emails: string[]) {
|
||||
emails.forEach((email) => {
|
||||
const to = email;
|
||||
|
||||
const templateVariables = {
|
||||
link: this.variables.APP_HOST,
|
||||
idNotLink: this.variables.IDNOT_PROD_BASE_URL,
|
||||
};
|
||||
|
||||
const templateName = ETemplates.SUBSCRIPTION_INVITATION;
|
||||
const subject = "Invitation abonnement LeCoffre";
|
||||
|
||||
this.mailchimpService.create({
|
||||
templateName,
|
||||
to,
|
||||
subject,
|
||||
templateVariables,
|
||||
uid: "",
|
||||
from: null,
|
||||
cc: [],
|
||||
cci: [],
|
||||
sentAt: null,
|
||||
nbTrySend: null,
|
||||
lastTrySendDate: null,
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -2,4 +2,5 @@ export const ETemplates = {
|
||||
DOCUMENT_ASKED: "DOCUMENT_ASKED",
|
||||
DOCUMENT_REFUSED: "DOCUMENT_REFUSED",
|
||||
DOCUMENT_RECAP: "DOCUMENT_RECAP",
|
||||
SUBSCRIPTION_INVITATION: "SUBSCRIPTION_INVITATION",
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user