EmailController.java 2.47 KB
package com.ecommerce.notification.controller;

import com.ecommerce.notification.model.dto.EmailRequest;
import com.ecommerce.notification.service.EmailService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/api/email")
@RequiredArgsConstructor
public class EmailController {
    
    private final EmailService emailService;
    
    @PostMapping("/send")
    public ResponseEntity<Map<String, Object>> sendEmail(@Valid @RequestBody EmailRequest request) {
        boolean success = emailService.sendEmail(request);
        
        Map<String, Object> response = new HashMap<>();
        response.put("success", success);
        response.put("message", success ? "Email sent successfully" : "Failed to send email");
        response.put("to", request.getTo());
        
        return ResponseEntity.ok(response);
    }
    
    @PostMapping("/bulk")
    public ResponseEntity<Map<String, String>> sendBulkEmail(
            @RequestBody Map<String, Object> request) {
        
        String[] toEmails = (String[]) request.get("toEmails");
        String subject = (String) request.get("subject");
        String content = (String) request.get("content");
        Boolean isHtml = (Boolean) request.get("isHtml");
        
        if (isHtml == null) {
            isHtml = true;
        }
        
        emailService.sendBulkEmail(toEmails, subject, content, isHtml);
        
        Map<String, String> response = new HashMap<>();
        response.put("message", "Bulk email sending started");
        response.put("recipients", String.valueOf(toEmails.length));
        
        return ResponseEntity.ok(response);
    }
    
    @GetMapping("/test")
    public ResponseEntity<Map<String, String>> testEmail() {
        EmailRequest request = new EmailRequest();
        request.setTo("test@example.com");
        request.setSubject("Test Email");
        request.setContent("<h1>Test Email</h1><p>This is a test email from Notification Service.</p>");
        
        boolean success = emailService.sendEmail(request);
        
        Map<String, String> response = new HashMap<>();
        response.put("status", success ? "SUCCESS" : "FAILED");
        response.put("message", success ? "Test email sent successfully" : "Failed to send test email");
        
        return ResponseEntity.ok(response);
    }
}