From 65eddf6fd8f5a13a5f3553160a0c93fa614bb182 Mon Sep 17 00:00:00 2001
From: venbaittech Dear %s, A new user has registered and is awaiting your review. Details: Name: %s Please review the registration and take appropriate action:
-Email: %s
Dear %s,
+You have received new feedback from a user through the mobile application.
+User Details:
+Feedback:
++ 1. How was your experience with us today? Rating: %s + 2. How did we perform in key areas? + 1. Ease of Use: %s + 2. Quality: %s + 3. Design: %s + 4. Redundancy: %s + 3. Additional Feedback: + 1. %s ++
Thank you,
+The FCSC App Team
+ + + `, adminName, userName, formattedDate, formattedDateTime, emojiRating, easeOfUse, quality, design, redundancy, additionalFeedback) + + // Define the target type (e.g., "smtp") + targetType := "feedback_receive_mail" + + // Fetch the email configuration record where type matches targetType + emailConfig, err := app.Dao().FindFirstRecordByData("email_configuration", "type", targetType) + if err != nil { + log.Printf("Failed to fetch email configuration for type '%s': %v", targetType, err) + return fmt.Errorf("email configuration not found for type '%s'", targetType) + } + + // Get the email address + feedbackEmail := emailConfig.GetString("email") + if feedbackEmail == "" { + log.Printf("No email address configured for type '%s'", targetType) + return fmt.Errorf("no email address configured for type '%s'", targetType) + } + // Create the email message + message := &mailer.Message{ + From: mail.Address{ + Name: "FCSC", + Address: app.Settings().Meta.SenderAddress, + }, + To: []mail.Address{ + { + Name: adminName, + Address: feedbackEmail, + }, + }, + Subject: subject, + HTML: body, + } + + // Send the email + err = app.NewMailClient().Send(message) + if err != nil { + log.Printf("Failed to send feedback email to admin: %v", err) + return err + } + + log.Println("Feedback email sent successfully to the admin.") + } + return nil + }) + app.OnRecordAfterCreateRequest("otp_requests").Add(func(e *core.RecordCreateEvent) error { // Ensure the record has an email field email, ok := e.Record.Get("email").(string) @@ -598,18 +637,121 @@ func verifyEmailHandler(c echo.Context) error { // Set the verified status to true record.Set("user_mail_verify", true) - log.Printf("Failed to verify user: %v", err) + // log.Printf("Failed to verify user: %v", err) if err := app.Dao().SaveRecord(record); err != nil { - return c.JSON(500, map[string]interface{}{ - "code": 500, - "message": "Failed to verify user.", + log.Printf("Failed to update email verification status: %v", err) + return c.JSON(http.StatusInternalServerError, map[string]string{ + "error": "Failed to update email verification status", }) } - // Redirect to the login page after successful verification - log.Println("Email verification successful") - return c.JSON(http.StatusOK, map[string]string{ - "message": "Email verified successfully!", - }) + response := c.HTML(http.StatusOK, ` + + + + + + + + +`) + + // Fetch user details for email notification + username := record.GetString("username") + userEmail := record.GetString("email") + + // Send admin email asynchronously + go func() { + err = sendAdminEmail(app, userID, username, userEmail) + if err != nil { + log.Printf("Failed to send admin email: %v", err) + } + }() + + return response } + +func sendAdminEmail(app *pocketbase.PocketBase, userID, username, userEmail string) error { + adminName := "Admin" + subject := "New User Registration Pending Review" + body := fmt.Sprintf(` + + +Dear %s,
+A new user has registered and is awaiting your review.
+Details:
+Name: %s
+ Email: %s
Please review the registration and take appropriate action:
+ + + + `, adminName, username, userEmail, userID, userID) + + emailConfig, err := app.Dao().FindFirstRecordByData("email_configuration", "type", "admin_receive_mail") + if err != nil { + log.Printf("Failed to fetch email configuration: %v", err) + return nil + } + adminEmail := emailConfig.GetString("email") + + // Send email + message := &mailer.Message{ + From: mail.Address{ + Name: "FCSC", + Address: app.Settings().Meta.SenderAddress, + }, + To: []mail.Address{ + {Name: adminName, Address: adminEmail}, + }, + Subject: subject, + HTML: body, + } + + if err := app.NewMailClient().Send(message); err != nil { + log.Printf("Failed to send admin email: %v", err) + return nil + } + + log.Println("Admin email sent successfully.") + return nil +}