package com.prudas.app.controller;

import com.prudas.app.dto.NewsletterRequest;
import com.prudas.app.security.ClientIpResolver;
import com.prudas.app.service.NewsletterService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/newsletter")
@RequiredArgsConstructor
public class NewsletterController {

    private final NewsletterService newsletterService;
    private final ClientIpResolver clientIpResolver;

    @PostMapping
    public ResponseEntity<Void> subscribe(@Valid @RequestBody NewsletterRequest request, HttpServletRequest httpRequest) {
        newsletterService.subscribe(request, clientIpResolver.resolve(httpRequest));
        return ResponseEntity.accepted().build();
    }

    @GetMapping("/confirm")
    public ResponseEntity<Void> confirm(@RequestParam String token) {
        boolean confirmed = newsletterService.confirm(token);
        return confirmed ? ResponseEntity.ok().build() : ResponseEntity.notFound().build();
    }
}
