package com.heaerie.server.auth201.Auth201Server.controller;

import com.heaerie.server.auth201.Auth201Server.dto.ClientRegistrationRequest;
import com.heaerie.server.auth201.Auth201Server.dto.ClientRegistrationResponse;
import com.heaerie.server.auth201.Auth201Server.service.ClientRegistrationService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping("/oauth")
public class ClientRegistrationController {

    private final ClientRegistrationService clientRegistrationService;

    public ClientRegistrationController(ClientRegistrationService clientRegistrationService) {
        this.clientRegistrationService = clientRegistrationService;
    }

    @GetMapping("/register")
    public String showRegistrationForm() {
        return "register-client";
    }

    @PostMapping("/register")
    @ResponseBody
    public ResponseEntity<?> registerClient(@RequestBody ClientRegistrationRequest request) {
        try {
            ClientRegistrationResponse response = clientRegistrationService.registerClient(request);
            return ResponseEntity.ok(response);
        } catch (IllegalArgumentException e) {
            return ResponseEntity.badRequest().body(e.getMessage());
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
                    .body("Registration failed: " + e.getMessage());
        }
    }
}
