This commit is contained in:
Vins 2024-06-18 11:11:22 +02:00
parent c01f5c1d25
commit c8f77ad783
4 changed files with 57 additions and 22 deletions

View File

@ -0,0 +1,35 @@
import { Response, Request } from "express";
import { Controller, Post } from "@ControllerPattern/index";
import ApiController from "@Common/system/controller-pattern/ApiController";
import { Service } from "typedi";
import authHandler from "@App/middlewares/AuthHandler";
import MailchimpService from "@Services/common/MailchimpService/MailchimpService";
@Controller()
@Service()
export default class MailchimpController extends ApiController {
constructor(private mailchimpService: MailchimpService) {
super();
}
/**
* @description Create a new customer
*/
@Post("/api/v1/notary/mailchimp", [authHandler])
protected async post(req: Request, response: Response) {
try {
//init IUser resource with request body values
const email = req.body.email;
//call service to get prisma entity
const responseCall = await this.mailchimpService.addToMailchimpList(email);
//success
this.httpCreated(response, responseCall);
} catch (error) {
this.httpInternalError(response, error);
return;
}
}
}

View File

@ -54,6 +54,7 @@ import StripeController from "./api/admin/StripeController";
import StripeWebhooks from "@Common/webhooks/stripeWebhooks";
import RulesGroupsController from "./api/admin/RulesGroupsController";
import NotesController from "./api/customer/NotesController";
import MailchimpController from "./api/notary/MailchimpController";
/**
* @description This allow to declare all controllers used in the application
@ -116,5 +117,6 @@ export default {
Container.get(StripeWebhooks);
Container.get(RulesGroupsController);
Container.get(NotesController);
Container.get(MailchimpController);
},
};

View File

@ -160,6 +160,9 @@ export class BackendVariables {
@IsNotEmpty()
public readonly IDNOT_PROD_BASE_URL!: string;
@IsNotEmpty()
public readonly MAILCHIMP_KEY!: string;
public constructor() {
dotenv.config();
this.DATABASE_PORT = process.env["DATABASE_PORT"]!;
@ -214,6 +217,7 @@ export class BackendVariables {
this.STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID = process.env["STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID"]!;
this.STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID = process.env["STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID"]!;
this.IDNOT_PROD_BASE_URL = process.env["IDNOT_PROD_BASE_URL"]!;
this.MAILCHIMP_KEY = process.env["MAILCHIMP_KEY"]!;
}
public async validate(groups?: string[]) {
const validationOptions = groups ? { groups } : undefined;

View File

@ -115,29 +115,23 @@ export default class MailchimpService extends BaseService {
});
}
// private async addToMailchimpList(email: string) {
// const MAILCHIMP_API_KEY = "3fa54304bc766dfd0b8043a827b28a3a-us17"
// const data = {
// email_address: email,
// status: 'subscribed'
// };
public async addToMailchimpList(email: string) {
const MAILCHIMP_API_KEY = this.variables.MAILCHIMP_KEY;
const data = {
email_address: email,
status: 'subscribed'
};
// const response = await fetch(`https://us17.api.mailchimp.com/3.0/lists/6ea48f811d/members`, {
// method: 'POST',
// headers: {
// 'Authorization': `apikey ${MAILCHIMP_API_KEY}`,
// 'Content-Type': 'application/json'
// },
// body: JSON.stringify(data)
// });
const response = await fetch(`https://us17.api.mailchimp.com/3.0/lists/6ea48f811d/members`, {
method: 'POST',
headers: {
'Authorization': `apikey ${MAILCHIMP_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
// const json = await response.json();
return response.json();
// if (response.status === 200) {
// res.json({ message: 'Successfully subscribed!' });
// } else {
// res.json({ message: 'Failed to subscribe.' });
// }
// }
}
}