diff --git a/backend/imk-backend/.env b/backend/imk-backend/.env index 4977606..e97fbff 100644 --- a/backend/imk-backend/.env +++ b/backend/imk-backend/.env @@ -17,3 +17,4 @@ SMTP_USER=mailer@imk.mk SMTP_PASSWORD=76Avtostoperski76 SMTP_FROM=mailer@imk.mk FRONTEND_URL=https://imk.mk +ADMIN_EMAIL=petrovskidimitar@yandex.com \ No newline at end of file diff --git a/backend/imk-backend/src/admin/admin.service.ts b/backend/imk-backend/src/admin/admin.service.ts index 202f5bd..fc7a562 100644 --- a/backend/imk-backend/src/admin/admin.service.ts +++ b/backend/imk-backend/src/admin/admin.service.ts @@ -49,7 +49,7 @@ export class AdminService { data: { ...createUserDto, password: hashedPassword, - isAdmin: true, + isAdmin: createUserDto.isAdmin, }, }); } @@ -97,6 +97,7 @@ export class AdminService { document.title, document.uploadedBy.name, ); + console.log('Document shared with user:', sharedWithUser.email); return document; } diff --git a/backend/imk-backend/src/email/email.controller.ts b/backend/imk-backend/src/email/email.controller.ts index a343f4f..d78e5de 100644 --- a/backend/imk-backend/src/email/email.controller.ts +++ b/backend/imk-backend/src/email/email.controller.ts @@ -1,10 +1,15 @@ import { Controller, Post, Body } from '@nestjs/common'; import { EmailService } from './email.service'; -import { MailerService } from '@nestjs-modules/mailer'; +// import { MailerService } from '@nestjs-modules/mailer'; +class ContactFormDto { + name: string; + email: string; + message: string; + } -@Controller('contact') +@Controller('email') export class EmailController { - constructor(private emailService: MailerService) {} + constructor(private emailService: EmailService) {} @Post() async sendContactEmail(@Body() contactData: { @@ -12,17 +17,20 @@ export class EmailController { email: string; message: string; }) { - await this.emailService.sendMail({ - to: process.env.CONTACT_EMAIL, - subject: `Contact Form: ${contactData.name}`, - html: ` -

New Contact Form Submission

-

From: ${contactData.name}

-

Email: ${contactData.email}

-

Message:

-

${contactData.message}

- `, - }); + await this.emailService.sendContactEmail( + contactData.name, + contactData.email, + contactData.message + ); return { message: 'Contact form submitted successfully' }; } + @Post('contact') + async handleContactForm(@Body() contactData: ContactFormDto) { + await this.emailService.sendContactEmail( + contactData.name, + contactData.email, + contactData.message + ); + return { message: 'Thank you for your message. We will contact you soon.' }; + } } \ No newline at end of file diff --git a/backend/imk-backend/src/email/email.module.ts b/backend/imk-backend/src/email/email.module.ts index 427c61e..a424bb7 100644 --- a/backend/imk-backend/src/email/email.module.ts +++ b/backend/imk-backend/src/email/email.module.ts @@ -2,6 +2,7 @@ import { Module } from '@nestjs/common'; import { MailerModule } from '@nestjs-modules/mailer'; import { EmailService } from './email.service'; import { ConfigModule, ConfigService } from '@nestjs/config'; +import { EmailController } from './email.controller'; @Module({ imports: [ @@ -24,6 +25,7 @@ import { ConfigModule, ConfigService } from '@nestjs/config'; inject: [ConfigService], }), ], + controllers: [EmailController], providers: [EmailService], exports: [EmailService], }) diff --git a/backend/imk-backend/src/email/email.service.ts b/backend/imk-backend/src/email/email.service.ts index 0f7c465..db2353e 100644 --- a/backend/imk-backend/src/email/email.service.ts +++ b/backend/imk-backend/src/email/email.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@nestjs/common'; +import { Injectable, Post, Body } from '@nestjs/common'; import { MailerService } from '@nestjs-modules/mailer'; @Injectable() @@ -13,7 +13,10 @@ export class EmailService {

Welcome ${name}!

Your account has been created successfully.

You can now login to access your documents.

+

Please use the following link to reset your password:

+

Best regards,
IMK Team

`, + }); } @@ -42,4 +45,30 @@ export class EmailService { `, }); } -} \ No newline at end of file + async sendContactEmail(name: string, email: string, message: string) { + // Send to admin + await this.mailerService.sendMail({ + to: process.env.ADMIN_EMAIL, + subject: `New Contact Form Submission from ${name}`, + html: ` +

New Contact Form Submission

+

From: ${name}

+

Email: ${email}

+

Message:

+

${message}

+ `, + }); + await this.mailerService.sendMail({ + to: email, + subject: 'Thank you for contacting us', + html: ` +

Thank you for contacting us

+

Dear ${name},

+

We have received your message and will get back to you soon.

+

Your message:

+
${message}
+

Best regards,
IMK Team

+ `, + }); + } +} diff --git a/frontend/imk/src/pages/contactpage/Contact.jsx b/frontend/imk/src/pages/contactpage/Contact.jsx index 3a83711..6e7676e 100644 --- a/frontend/imk/src/pages/contactpage/Contact.jsx +++ b/frontend/imk/src/pages/contactpage/Contact.jsx @@ -1,115 +1,126 @@ - -import { useState } from 'react' -import { ChevronDownIcon } from '@heroicons/react/20/solid' -import { Switch } from '@headlessui/react' - -function classNames(...classes) { - return classes.filter(Boolean).join(' ') -} +import { useState, useEffect } from 'react'; +import axios from 'axios'; +import { useNavigate } from 'react-router-dom'; export default function Contact() { - const [agreed, setAgreed] = useState(false) + const navigate = useNavigate(); + const [formData, setFormData] = useState({ + name: '', + email: '', + message: '' + }); + const [status, setStatus] = useState({ type: '', message: '' }); - return ( -
-