Skip to content
Open
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
2 changes: 2 additions & 0 deletions backend/env.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export const EMAIL = "pramanickdebesh@gmail.com";
export const PASSWORD = "hzgtirhzoqsdeltq";
3 changes: 1 addition & 2 deletions backend/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import cors from 'cors';
import { router } from './routes/routes.mjs';

const app = express();
express.urlencoded()
//app.use(cookieParser());
app.use(cookieParser());
app.use(cors({
origin: 'http://localhost:3000', // replace with your React app origin
credentials: true,
Expand Down
55 changes: 22 additions & 33 deletions backend/logics/Availability/query.mjs
Original file line number Diff line number Diff line change
@@ -1,36 +1,25 @@
import { gql } from 'graphql-request';

export const GET_AVAILABILITY = `
query GetAvailability($eventName: String!) {
availability(where: { event_name: { _eq: $eventName } }) {
day
start_time
end_time
}
}
`;

export const UPSERT_AVAILABILITY = `
mutation UpsertAvailability($day: String!, $startTime: String!, $endTime: String!, $eventName: String!) {
insert_availability_one(
object: { day: $day, start_time: $startTime, end_time: $endTime, event_name: $eventName },
on_conflict: { constraint: availability_day_start_time_event_name_key, update_columns: [end_time] }
) {
id
day
start_time
end_time
event_name
}
export class SetAvailabilitySchema {
queryAvailability() {
return `
mutation MyMutation($day: String!, $startTime: String!, $endTime: String!, $eventName: String!) {
insert_availability_one(object: {day: $day, start_time: $startTime, end_time: $endTime, event_name: $eventName}) {
id
day
start_time
end_time
event_name
}
}
`;
}
`;


export const DELETE_AVAILABILITY = `
mutation DeleteAvailability($day: String!, $startTime: String!, $eventName: String!) {
delete_availability(where: { day: { _eq: $day }, start_time: { _eq: $startTime }, event_name: { _eq: $eventName } }) {
affected_rows
}

deleteAvailability() {
return `
mutation DeleteAvailability($day: String!, $startTime: String!, $eventName: String!) {
delete_availability(where: {day: {_eq: $day}, start_time: {_eq: $startTime}, event_name: {_eq: $eventName}}) {
affected_rows
}
}
`;
}
`;
}
148 changes: 68 additions & 80 deletions backend/logics/Availability/setAvailQueries.mjs
Original file line number Diff line number Diff line change
@@ -1,81 +1,69 @@
// import { GraphQLClient } from 'graphql-request';
// import bodyParser from "body-parser";
// import { SetAvailabilitySchema } from './query.mjs';
// //import axios from 'axios';
// //import gql from 'graphql-tag';
//
//
// const new_availability = new SetAvailabilitySchema();
//
// const hasuraEndpoint = 'http://localhost:8080/v1/graphql';
// const adminSecret = '123';
// const client = new GraphQLClient(hasuraEndpoint, {
// headers: {
// 'x-hasura-admin-secret': adminSecret
// // 'Authorization': `Bearer ${generateJwtToken()}`
// },
// });
//
//
// // Function to create availability
// export class setAvailability {
// set_availability(req, res) {
// for (const [day, slots] of Object.entries(req.body)) {
// slots.forEach(async slot => { // Note: Added 'async' here
// const { startTime, endTime } = slot;
// console.log(day, startTime, endTime);
// const eventName = req.params.eventName;
// //console.log(req.params);
// // Here you can call your function to insert the data into Hasura
//
// try {
// const response = await client.request(new_availability.queryAvailability(), {
// day, // Note: Changed 'weekday' to 'day'
// startTime,
// endTime,
// eventName
// })
// console.log(response.data);
// } catch (error) {
// console.error('Failed to create event:', error);
// //res.status(500).json({success: false});
// return;
// }
// });
// }
//
// //res.status(200).json({success: "availability inserted"});
// }
// async delete_availability(req, res) {
// const { day, startTime } = req.body;
// //console.log(req.body)
// const eventName = req.params.eventName
// console.log(eventName)
// try {
// const data = await client.request(new_availability.deleteAvailability(), { day, startTime ,eventName });
// res.json({ success: true });
// } catch (error) {
// console.error('Error occurred while deleting slot:', error);
// res.json({ success: false });
// }
// }
//
// // async get_availability(req, res) {
// // const eventName = req.params.eventName;
// // try {
// // const data = await client.request(new_availability.getAvailability(), { eventName });
// // res.json({ success: true, availability: data.availability });
// // } catch (error) {
// // console.error('Error occurred while fetching availability:', error);
// // res.json({ success: false });
// // }
// // }
//
// }
//
//
//
//
//
//
import { GraphQLClient } from 'graphql-request';
import bodyParser from "body-parser";
import { SetAvailabilitySchema } from './query.mjs';
//import axios from 'axios';
//import gql from 'graphql-tag';


const new_availability = new SetAvailabilitySchema();

const hasuraEndpoint = 'http://localhost:8080/v1/graphql';
const adminSecret = '123';

const client = new GraphQLClient(hasuraEndpoint, {
headers: {
'x-hasura-admin-secret': adminSecret
// 'Authorization': `Bearer ${generateJwtToken()}`
},
});


// Function to create availability
export class setAvailability {
set_availability(req, res) {
for (const [day, slots] of Object.entries(req.body)) {
slots.forEach(async slot => { // Note: Added 'async' here
const { startTime, endTime } = slot;
console.log(day, startTime, endTime);
const {eventName} = req.params;
console.log(req.params);
// Here you can call your function to insert the data into Hasura

try {
const response = await client.request(new_availability.queryAvailability(), {
day, // Note: Changed 'weekday' to 'day'
startTime,
endTime,
eventName
})
console.log(response.data);
} catch (error) {
console.error('Failed to create event:', error);
//res.status(500).json({success: false});
return;
}
});
}

//res.status(200).json({success: "availability inserted"});
}
async delete_availability(req, res) {
const { day, startTime } = req.body;
const {eventName} = req.params;
console.log("*************************")
console.log(req.body)
try {
const data = await client.request(new_availability.deleteAvailability(), { day, startTime, eventName });
res.json({ success: true });
} catch (error) {
console.error('Error occurred while deleting slot:', error);
res.json({ success: false });
}
}
}






4 changes: 3 additions & 1 deletion backend/logics/GetEvents/getEvents.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ export class GetEvent{

try {
const data = await client.request(get_events.GetEvents(),{});
//console.log(data);

// console.log(data.kalenview_create_events);

res.json(data.kalenview_create_events);
// res.status(200).json({success:true});
} catch (error) {
Expand Down
82 changes: 82 additions & 0 deletions backend/logics/Mailer/mailer.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import nodemailer from 'nodemailer';
import Mailgen from 'mailgen';
import { EMAIL, PASSWORD } from '../../env.mjs';

export class Mailer {

async send_real_mail(req, res) {

const { eventType, eventDetail, userEmail, userName, day, eventName, date, startTime, endTime } = req.body;
console.log(userEmail, userName, day, eventName, date, startTime, endTime); // testmail@test.com New Name MON abcdef 2024-05-27 15:00 15:30

const config = {
service: 'gmail',
auth: {
user: EMAIL,
pass: PASSWORD
}
}

const transporter = nodemailer.createTransport(config);

const MailGenerator = new Mailgen({
theme: "default",
product: {
name: "Event Scheduler of Kalenview ",
link: "https://mailgen.js"
}
});

const response = {
body: {
name: userName,
intro: `You have an upcoming event/meeting: ${eventName}`,
table: {
data: [
{
'Event Info' : 'Date',
description: date
},
{
item: 'Day',
description: day
},
{
item: 'Start Time',
description: startTime
},
{
item: 'End Time',
description: endTime
},
{
item: 'Event Location',
description: eventType
},
{
item: 'Event Description',
description: eventDetail
}
]
},
outro: "Kindly be present there are per the scheduled time"
}
}

const mail = MailGenerator.generate(response);

let message = {
from: EMAIL,
to: [userEmail, "pramanickdebesh1412@gmail.com"],
subject: `Event Reminder: ${eventName}`,
html: mail
}

transporter.sendMail(message).then(() => {
return res.status(201).json({ "msg": "Email is sent" })
}).catch(error => {
return res.status(500).json({ error })
});

}
}
13 changes: 1 addition & 12 deletions backend/logics/Register/query.mjs
Original file line number Diff line number Diff line change
@@ -1,18 +1,7 @@
export class RegisterEventQuery{
registerUser(){
return `
mutation ($email: String!, $password: String!, $firstName: String!, $lastName: String!, $company: String!, $role: String!) {
insert_kalenview_one(object: {
email: $email,
password: $password,
first_name: $firstName,
last_name: $lastName,
company_name: $company,
company_role: $role
}) {
uuid
}
}

`;
}
}
2 changes: 1 addition & 1 deletion backend/logics/VerifyJWT/verifyJWT.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export class VerifyJWToken{
}

else{
console.log("Valid jwt");
console.log("Valid jwt !");
return res.status(200).json({success:true});
}

Expand Down
Loading