Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions components/Events/EmailDialogue/EmailDialogue.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React, { useState, useEffect } from "react";
import axios from "axios";
import { API_ENDPOINTS } from "@/utils/config";
import { toast, ToastContainer } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";

Expand Down Expand Up @@ -46,20 +47,27 @@ const EmailDialogBox = ({ CertiOBJ, title, handelCloseModel }) => {
setIsButtonDisabled(true);
try {
setIsLoading(true);
const response = await axios.post("/api/v1/certificates", formData);
const response = await axios.post(API_ENDPOINTS.CERTIFICATES.GENERATE, {
...formData,
format: "pdf"
}, {
responseType: 'blob'
});

if (response.data && response.data.success) {
setCertificate(response.data.certificate);
if (response.status === 200) {
// The API returns the PDF binary directly.
// We create a Blob URL from the response data.
const file = new Blob([response.data], { type: 'application/pdf' });
const fileURL = URL.createObjectURL(file);
setCertificate(fileURL);
toast.success("Certificate generated successfully!");
} else {
toast.error(
response.data.error || "Failed to generate certificate"
);
toast.error("Failed to generate certificate");
setIsButtonDisabled(false);
}
} catch (error) {
const errorMessage =
error.response?.data?.error || "Error getting certificate";
console.error(error);
const errorMessage = "Error getting certificate";
toast.error(errorMessage);
setIsButtonDisabled(false);
} finally {
Expand All @@ -71,7 +79,8 @@ const EmailDialogBox = ({ CertiOBJ, title, handelCloseModel }) => {
if (certificate) {
const link = document.createElement("a");
link.href = certificate;
link.download = `${title}_certificate.png`;
link.download = `${title}_certificate.pdf`;
link.target = "_blank";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
Expand Down
48 changes: 31 additions & 17 deletions components/Events/Register_dialogue/Registerdialogue.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import React, { useState } from "react";
import axios from "axios";
import Confetti from "react-confetti";
import { API_ENDPOINTS } from "../../../utils/config";
import { toast, ToastContainer } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";

const RegisterDialogue = ({ slug, onRegistrationClose }) => {
const [formData, setFormData] = useState({
Expand Down Expand Up @@ -52,29 +55,30 @@ const RegisterDialogue = ({ slug, onRegistrationClose }) => {
try {
console.log("Registering for event:", slug);
console.log("Form data:", formData);
const response = await axios.post("/api/v1/events/register", {
const response = await axios.post(API_ENDPOINTS.EVENTS.REGISTER, {
...formData,
slug
});
setLoading(false);

if (response.status === 200) {
setSuccess(true);
toast.success("Registration successful!");
console.log("Registration successful:", response.data);
}
} catch (err) {
setLoading(false);
if (
err.response?.data?.error ===
"Email already registered for this event."
) {
setError("Email already registered");
} else {
setError(
err.response?.data?.message ||
"An error occurred during registration."
);
let errorMessage = "An error occurred during registration.";

// Prioritize the 'error' field from the response as per user report
if (err.response?.data?.error) {
errorMessage = err.response.data.error;
} else if (err.response?.data?.message) {
errorMessage = err.response.data.message;
}

setError(errorMessage);
toast.error(errorMessage);
console.error("Registration error:", err);
}
};
Expand Down Expand Up @@ -179,22 +183,32 @@ const RegisterDialogue = ({ slug, onRegistrationClose }) => {
type="submit"
disabled={loading || success}
className={`w-full px-4 py-2 font-bold rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2
${
loading
? "bg-gray-400"
: success
${loading
? "bg-gray-400"
: success
? " bg-green-800 text-white"
: "bg-bright_green text-black"
}`}
>
{loading
? "Registering..."
: success
? "Registered"
: "Register"}
? "Registered"
: "Register"}
</button>
</form>
</div>
<ToastContainer
position="top-right"
autoClose={3000}
hideProgressBar={false}
newestOnTop={false}
closeOnClick
rtl={false}
pauseOnFocusLoss
draggable
pauseOnHover
/>
</div>
);
};
Expand Down
145 changes: 0 additions & 145 deletions pages/api/v1/certificates/index.js

This file was deleted.

Loading