package com.rtlabs.invite.api;

import jakarta.validation.constraints.Pattern;
import java.util.List;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/invites")
public class InviteController {

  private final InviteService inviteService;

  public InviteController(InviteService inviteService) {
    this.inviteService = inviteService;
  }

  @PostMapping
  public ResponseEntity<Void> sendInvites(@RequestBody InviteRequest request) {
    request.emails().forEach(inviteService::sendInvite);
    return ResponseEntity.accepted().build();
  }

  public record InviteRequest(
      List<@Pattern(regexp = "^([\\w\\.-]+)+@[\\w\\.-]+$", message = "email format") String> emails
  ) {}
}
